@futdevpro/ccap 1.1.3080 → 1.1.3091
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-T3FIPSNM.js → agent-instances.module-O4X2F7LQ.js} +2 -2
- package/client-dist/{ca.module-SERHUBQ4.js → ca.module-55I6KUEP.js} +2 -2
- package/client-dist/{cc-usage-dashboard.component-JOXT7BKW.js → cc-usage-dashboard.component-CQ7LFS2R.js} +2 -2
- package/client-dist/{cc.module-HXLPF5AR.js → cc.module-RPI65QBI.js} +2 -2
- package/client-dist/{chunk-D47FE53T.js → chunk-2MUJHI5A.js} +2 -2
- package/client-dist/{chunk-6RBMBOAL.js → chunk-2QSAR32U.js} +2 -2
- package/client-dist/{chunk-ZUABLPQU.js → chunk-3PWBQJ4M.js} +2 -2
- package/client-dist/{chunk-JAAFDVEO.js → chunk-3SDY7S56.js} +2 -2
- package/client-dist/chunk-4P4OUN3W.js +2 -0
- package/client-dist/chunk-4P4OUN3W.js.map +7 -0
- package/client-dist/{chunk-AYMTESIQ.js → chunk-66F6YPRF.js} +2 -2
- package/client-dist/{chunk-LI5BFFUF.js → chunk-6ALMEEKI.js} +2 -2
- package/client-dist/{chunk-FWJC7PZ5.js → chunk-6SYXRJL2.js} +2 -2
- package/client-dist/{chunk-ICSRQYOG.js → chunk-7A6FYQFJ.js} +2 -2
- package/client-dist/{chunk-LSG4FC4S.js → chunk-7GOR2GBC.js} +2 -2
- package/client-dist/{chunk-WBSH4VM3.js → chunk-7LWJBGL4.js} +2 -2
- package/client-dist/{chunk-RMWBPGDF.js → chunk-ALFIKH7E.js} +2 -2
- package/client-dist/{chunk-U6FT5DX6.js → chunk-B7U7QHU6.js} +2 -2
- package/client-dist/{chunk-RFR32U64.js → chunk-BQSN75P4.js} +2 -2
- package/client-dist/{chunk-TDNLCOTM.js → chunk-BT5EHOCQ.js} +2 -2
- package/client-dist/{chunk-SARFTVZD.js → chunk-CP5F6KVS.js} +2 -2
- package/client-dist/{chunk-AFIOQKJM.js → chunk-DAHSKF6G.js} +2 -2
- package/client-dist/{chunk-VZZRCCYJ.js → chunk-DTBXYUNS.js} +2 -2
- package/client-dist/{chunk-GCPHDFMB.js → chunk-ECB63DP7.js} +2 -2
- package/client-dist/{chunk-ZEACNG3V.js → chunk-ELA6J2TW.js} +2 -2
- package/client-dist/{chunk-P4ZNYMDK.js → chunk-EO3EZUUJ.js} +2 -2
- package/client-dist/{chunk-ADZQ7RWS.js → chunk-FGO677RH.js} +2 -2
- package/client-dist/{chunk-J5FHTYJI.js → chunk-H426VGC4.js} +2 -2
- package/client-dist/{chunk-EGDK3H4V.js → chunk-HBCFMIW2.js} +2 -2
- package/client-dist/{chunk-44LSDHLE.js → chunk-HGDZCCLA.js} +2 -2
- package/client-dist/{chunk-TQRFQTYL.js → chunk-I7ELHYQN.js} +2 -2
- package/client-dist/{chunk-TJZTR4ZA.js → chunk-IQKLEPPG.js} +2 -2
- package/client-dist/{chunk-OGLCZ5PF.js → chunk-IT32VCIH.js} +2 -2
- package/client-dist/{chunk-N3U7GSXB.js → chunk-K5SBQVP3.js} +2 -2
- package/client-dist/{chunk-HKFQB2DP.js → chunk-KNX6PXMA.js} +2 -2
- package/client-dist/{chunk-HKFQB2DP.js.map → chunk-KNX6PXMA.js.map} +1 -1
- package/client-dist/{chunk-QDWAQWHI.js → chunk-LSLNEGFB.js} +2 -2
- package/client-dist/{chunk-VS7XCNU4.js → chunk-N7GDFSBT.js} +2 -2
- package/client-dist/{chunk-P25XSELJ.js → chunk-NHTWNNA7.js} +2 -2
- package/client-dist/{chunk-SOM7BFLB.js → chunk-NJZDOSTR.js} +2 -2
- package/client-dist/{chunk-KIXP6BPF.js → chunk-NRLG6DK5.js} +2 -2
- package/client-dist/{chunk-ZPYMYX4G.js → chunk-O6YDDGMV.js} +2 -2
- package/client-dist/{chunk-PJUFFAQO.js → chunk-OF2ONF6M.js} +2 -2
- package/client-dist/{chunk-LE6MT4FU.js → chunk-QIJSGEFW.js} +2 -2
- package/client-dist/{chunk-3CNQKHOG.js → chunk-QSDRSULH.js} +2 -2
- package/client-dist/{chunk-4QJQ42Z2.js → chunk-ROFLYYQN.js} +2 -2
- package/client-dist/{chunk-NYTGXX6H.js → chunk-SBTGHAYK.js} +2 -2
- package/client-dist/{chunk-IHXS3RZI.js → chunk-SPEFMR4R.js} +2 -2
- package/client-dist/{chunk-BKZUZRTC.js → chunk-TBT57I7I.js} +2 -2
- package/client-dist/{chunk-UEJF4FN2.js → chunk-THHGLNFI.js} +2 -2
- package/client-dist/{chunk-GEMMP35S.js → chunk-TP7RKDPV.js} +2 -2
- package/client-dist/{chunk-EQP2GOHM.js → chunk-TRNNWPOH.js} +2 -2
- package/client-dist/{chunk-7UVQNGAS.js → chunk-TYWRMRAZ.js} +2 -2
- package/client-dist/{chunk-IM4THCNH.js → chunk-V5NW6HMC.js} +2 -2
- package/client-dist/{chunk-H6AWRT5Q.js → chunk-W3VVTZI7.js} +2 -2
- package/client-dist/{chunk-WH4AQVRT.js → chunk-W6XVJPUX.js} +2 -2
- package/client-dist/{chunk-RTI3MIMV.js → chunk-X6LQ5NDB.js} +2 -2
- package/client-dist/{chunk-HIZPGG42.js → chunk-XXCU3VRL.js} +2 -2
- package/client-dist/{chunk-TAEPIX4H.js → chunk-XYQGWUC4.js} +2 -2
- package/client-dist/{chunk-OQDWKISV.js → chunk-Y2L3PCW4.js} +2 -2
- package/client-dist/{chunk-3JNMH7S2.js → chunk-Z3RMRSY7.js} +2 -2
- package/client-dist/{chunk-Q5M3WLDQ.js → chunk-Z76NRHPI.js} +2 -2
- package/client-dist/{consultant.module-TMQIDQRI.js → consultant.module-E3VLLZDN.js} +2 -2
- package/client-dist/{crd.module-4WLV2OFB.js → crd.module-3RSUP6DI.js} +2 -2
- package/client-dist/{dashboard.module-IKIYOYBX.js → dashboard.module-PYBGY56O.js} +2 -2
- package/client-dist/{do.module-HCL5N6UW.js → do.module-PD25CGC7.js} +2 -2
- package/client-dist/{document-library.module-AL7ZLZAD.js → document-library.module-VAFSW6G6.js} +2 -2
- package/client-dist/{embedding-eval.module-QDFOESPD.js → embedding-eval.module-2CDS7F52.js} +2 -2
- package/client-dist/{embedding-registry.module-XUGDYKZR.js → embedding-registry.module-IZVNOH7A.js} +2 -2
- package/client-dist/{err.module-DVGALBD3.js → err.module-3NVH4NC7.js} +2 -2
- package/client-dist/{feedback.module-LFR2FOID.js → feedback.module-X5QXB76I.js} +2 -2
- package/client-dist/{host-runtime-mcp.module-LCBJZ6RC.js → host-runtime-mcp.module-DNDJGQ6T.js} +2 -2
- package/client-dist/index.html +1 -1
- package/client-dist/{live-dev-pipeline.module-4D2IPHP6.js → live-dev-pipeline.module-HFMV5IJN.js} +2 -2
- package/client-dist/{logs.module-MEPAEBYW.js → logs.module-FMAQMKQG.js} +2 -2
- package/client-dist/{main-PK5UCYRP.js → main-A3GB5DKS.js} +3 -3
- package/client-dist/{master-control-remote-poc.module-LLBVMF4X.js → master-control-remote-poc.module-6X42ODCA.js} +2 -2
- package/client-dist/{mobile-app.module-SDJ2NQM7.js → mobile-app.module-WVXOGJ44.js} +2 -2
- package/client-dist/{model-registry.module-ZQCHARJO.js → model-registry.module-VJWYB5V7.js} +2 -2
- package/client-dist/{oc.module-5NKEVNFH.js → oc.module-WMJBA6KT.js} +2 -2
- package/client-dist/{orc.module-MK5GH4GP.js → orc.module-3SBAFMI4.js} +2 -2
- package/client-dist/{project-management.module-Y5CAZ5HP.js → project-management.module-ATZOSRRL.js} +2 -2
- package/client-dist/project-source-routed.module-M5G7A42W.js +2 -0
- package/client-dist/{scheduler.module-2O7ZHXQZ.js → scheduler.module-EC7PAAAQ.js} +2 -2
- package/client-dist/{session.module-SYN2WJPA.js → session.module-FEBNYHS6.js} +2 -2
- package/client-dist/{set.module-TLGYA74I.js → set.module-MDPOOWNA.js} +2 -2
- package/client-dist/{setup.module-T6K3OZUU.js → setup.module-T7R5ZKVW.js} +2 -2
- package/client-dist/{terminals.module-ARGBB72C.js → terminals.module-TQNCPJ2W.js} +2 -2
- package/client-dist/{voice-notes-poc.module-GTOSJJ7N.js → voice-notes-poc.module-DBALDSBW.js} +2 -2
- package/client-dist/{wfs.module-OUVID73U.js → wfs.module-43UB5OI3.js} +2 -2
- package/package.json +1 -1
- package/server/build/src/_modules/ccap-agent/_modules/agent-core/_models/interfaces/conversation-messages/ac-message.interface.d.ts +10 -0
- package/server/build/src/_modules/ccap-agent/_modules/agent-core/_models/interfaces/conversation-messages/ac-message.interface.d.ts.map +1 -1
- package/server/build/src/_modules/ccap-agent/_modules/ccap-sessions/_collections/utils/ses-query-param.util.d.ts +8 -1
- package/server/build/src/_modules/ccap-agent/_modules/ccap-sessions/_collections/utils/ses-query-param.util.d.ts.map +1 -1
- package/server/build/src/_modules/ccap-agent/_modules/ccap-sessions/_collections/utils/ses-query-param.util.js +22 -1
- package/server/build/src/_modules/ccap-agent/_modules/ccap-sessions/_collections/utils/ses-query-param.util.js.map +1 -1
- package/server/build/src/_modules/ccap-agent/_modules/ccap-sessions/_collections/utils/ses-query-param.util.spec.js +21 -0
- package/server/build/src/_modules/ccap-agent/_modules/ccap-sessions/_collections/utils/ses-query-param.util.spec.js.map +1 -1
- package/server/build/src/_modules/ccap-agent/_modules/ccap-sessions/_enums/ses-archive-scope.type-enum.d.ts +18 -0
- package/server/build/src/_modules/ccap-agent/_modules/ccap-sessions/_enums/ses-archive-scope.type-enum.d.ts.map +1 -0
- package/server/build/src/_modules/ccap-agent/_modules/ccap-sessions/_enums/ses-archive-scope.type-enum.js +22 -0
- package/server/build/src/_modules/ccap-agent/_modules/ccap-sessions/_enums/ses-archive-scope.type-enum.js.map +1 -0
- package/server/build/src/_modules/ccap-agent/_modules/ccap-sessions/_models/interfaces/ses-messages-chunk-response.interface.d.ts +7 -3
- package/server/build/src/_modules/ccap-agent/_modules/ccap-sessions/_models/interfaces/ses-messages-chunk-response.interface.d.ts.map +1 -1
- package/server/build/src/_modules/ccap-agent/_modules/ccap-sessions/_routes/ccap-sessions.controller.d.ts.map +1 -1
- package/server/build/src/_modules/ccap-agent/_modules/ccap-sessions/_routes/ccap-sessions.controller.js +1 -0
- package/server/build/src/_modules/ccap-agent/_modules/ccap-sessions/_routes/ccap-sessions.controller.js.map +1 -1
- package/server/build/src/_modules/ccap-agent/_modules/ccap-sessions/_services/ses-conversation-chunk.data-service.spec.js +111 -0
- package/server/build/src/_modules/ccap-agent/_modules/ccap-sessions/_services/ses-conversation-chunk.data-service.spec.js.map +1 -1
- package/server/build/src/_modules/ccap-agent/_modules/ccap-sessions/_services/ses-conversation.data-service.d.ts +10 -4
- package/server/build/src/_modules/ccap-agent/_modules/ccap-sessions/_services/ses-conversation.data-service.d.ts.map +1 -1
- package/server/build/src/_modules/ccap-agent/_modules/ccap-sessions/_services/ses-conversation.data-service.js +23 -7
- package/server/build/src/_modules/ccap-agent/_modules/ccap-sessions/_services/ses-conversation.data-service.js.map +1 -1
- package/client-dist/chunk-X3UVLBOY.js +0 -2
- package/client-dist/chunk-X3UVLBOY.js.map +0 -7
- package/client-dist/project-source-routed.module-ZINEDOO3.js +0 -2
- /package/client-dist/{agent-instances.module-T3FIPSNM.js.map → agent-instances.module-O4X2F7LQ.js.map} +0 -0
- /package/client-dist/{ca.module-SERHUBQ4.js.map → ca.module-55I6KUEP.js.map} +0 -0
- /package/client-dist/{cc-usage-dashboard.component-JOXT7BKW.js.map → cc-usage-dashboard.component-CQ7LFS2R.js.map} +0 -0
- /package/client-dist/{cc.module-HXLPF5AR.js.map → cc.module-RPI65QBI.js.map} +0 -0
- /package/client-dist/{chunk-D47FE53T.js.map → chunk-2MUJHI5A.js.map} +0 -0
- /package/client-dist/{chunk-6RBMBOAL.js.map → chunk-2QSAR32U.js.map} +0 -0
- /package/client-dist/{chunk-ZUABLPQU.js.map → chunk-3PWBQJ4M.js.map} +0 -0
- /package/client-dist/{chunk-JAAFDVEO.js.map → chunk-3SDY7S56.js.map} +0 -0
- /package/client-dist/{chunk-AYMTESIQ.js.map → chunk-66F6YPRF.js.map} +0 -0
- /package/client-dist/{chunk-LI5BFFUF.js.map → chunk-6ALMEEKI.js.map} +0 -0
- /package/client-dist/{chunk-FWJC7PZ5.js.map → chunk-6SYXRJL2.js.map} +0 -0
- /package/client-dist/{chunk-ICSRQYOG.js.map → chunk-7A6FYQFJ.js.map} +0 -0
- /package/client-dist/{chunk-LSG4FC4S.js.map → chunk-7GOR2GBC.js.map} +0 -0
- /package/client-dist/{chunk-WBSH4VM3.js.map → chunk-7LWJBGL4.js.map} +0 -0
- /package/client-dist/{chunk-RMWBPGDF.js.map → chunk-ALFIKH7E.js.map} +0 -0
- /package/client-dist/{chunk-U6FT5DX6.js.map → chunk-B7U7QHU6.js.map} +0 -0
- /package/client-dist/{chunk-RFR32U64.js.map → chunk-BQSN75P4.js.map} +0 -0
- /package/client-dist/{chunk-TDNLCOTM.js.map → chunk-BT5EHOCQ.js.map} +0 -0
- /package/client-dist/{chunk-SARFTVZD.js.map → chunk-CP5F6KVS.js.map} +0 -0
- /package/client-dist/{chunk-AFIOQKJM.js.map → chunk-DAHSKF6G.js.map} +0 -0
- /package/client-dist/{chunk-VZZRCCYJ.js.map → chunk-DTBXYUNS.js.map} +0 -0
- /package/client-dist/{chunk-GCPHDFMB.js.map → chunk-ECB63DP7.js.map} +0 -0
- /package/client-dist/{chunk-ZEACNG3V.js.map → chunk-ELA6J2TW.js.map} +0 -0
- /package/client-dist/{chunk-P4ZNYMDK.js.map → chunk-EO3EZUUJ.js.map} +0 -0
- /package/client-dist/{chunk-ADZQ7RWS.js.map → chunk-FGO677RH.js.map} +0 -0
- /package/client-dist/{chunk-J5FHTYJI.js.map → chunk-H426VGC4.js.map} +0 -0
- /package/client-dist/{chunk-EGDK3H4V.js.map → chunk-HBCFMIW2.js.map} +0 -0
- /package/client-dist/{chunk-44LSDHLE.js.map → chunk-HGDZCCLA.js.map} +0 -0
- /package/client-dist/{chunk-TQRFQTYL.js.map → chunk-I7ELHYQN.js.map} +0 -0
- /package/client-dist/{chunk-TJZTR4ZA.js.map → chunk-IQKLEPPG.js.map} +0 -0
- /package/client-dist/{chunk-OGLCZ5PF.js.map → chunk-IT32VCIH.js.map} +0 -0
- /package/client-dist/{chunk-N3U7GSXB.js.map → chunk-K5SBQVP3.js.map} +0 -0
- /package/client-dist/{chunk-QDWAQWHI.js.map → chunk-LSLNEGFB.js.map} +0 -0
- /package/client-dist/{chunk-VS7XCNU4.js.map → chunk-N7GDFSBT.js.map} +0 -0
- /package/client-dist/{chunk-P25XSELJ.js.map → chunk-NHTWNNA7.js.map} +0 -0
- /package/client-dist/{chunk-SOM7BFLB.js.map → chunk-NJZDOSTR.js.map} +0 -0
- /package/client-dist/{chunk-KIXP6BPF.js.map → chunk-NRLG6DK5.js.map} +0 -0
- /package/client-dist/{chunk-ZPYMYX4G.js.map → chunk-O6YDDGMV.js.map} +0 -0
- /package/client-dist/{chunk-PJUFFAQO.js.map → chunk-OF2ONF6M.js.map} +0 -0
- /package/client-dist/{chunk-LE6MT4FU.js.map → chunk-QIJSGEFW.js.map} +0 -0
- /package/client-dist/{chunk-3CNQKHOG.js.map → chunk-QSDRSULH.js.map} +0 -0
- /package/client-dist/{chunk-4QJQ42Z2.js.map → chunk-ROFLYYQN.js.map} +0 -0
- /package/client-dist/{chunk-NYTGXX6H.js.map → chunk-SBTGHAYK.js.map} +0 -0
- /package/client-dist/{chunk-IHXS3RZI.js.map → chunk-SPEFMR4R.js.map} +0 -0
- /package/client-dist/{chunk-BKZUZRTC.js.map → chunk-TBT57I7I.js.map} +0 -0
- /package/client-dist/{chunk-UEJF4FN2.js.map → chunk-THHGLNFI.js.map} +0 -0
- /package/client-dist/{chunk-GEMMP35S.js.map → chunk-TP7RKDPV.js.map} +0 -0
- /package/client-dist/{chunk-EQP2GOHM.js.map → chunk-TRNNWPOH.js.map} +0 -0
- /package/client-dist/{chunk-7UVQNGAS.js.map → chunk-TYWRMRAZ.js.map} +0 -0
- /package/client-dist/{chunk-IM4THCNH.js.map → chunk-V5NW6HMC.js.map} +0 -0
- /package/client-dist/{chunk-H6AWRT5Q.js.map → chunk-W3VVTZI7.js.map} +0 -0
- /package/client-dist/{chunk-WH4AQVRT.js.map → chunk-W6XVJPUX.js.map} +0 -0
- /package/client-dist/{chunk-RTI3MIMV.js.map → chunk-X6LQ5NDB.js.map} +0 -0
- /package/client-dist/{chunk-HIZPGG42.js.map → chunk-XXCU3VRL.js.map} +0 -0
- /package/client-dist/{chunk-TAEPIX4H.js.map → chunk-XYQGWUC4.js.map} +0 -0
- /package/client-dist/{chunk-OQDWKISV.js.map → chunk-Y2L3PCW4.js.map} +0 -0
- /package/client-dist/{chunk-3JNMH7S2.js.map → chunk-Z3RMRSY7.js.map} +0 -0
- /package/client-dist/{chunk-Q5M3WLDQ.js.map → chunk-Z76NRHPI.js.map} +0 -0
- /package/client-dist/{consultant.module-TMQIDQRI.js.map → consultant.module-E3VLLZDN.js.map} +0 -0
- /package/client-dist/{crd.module-4WLV2OFB.js.map → crd.module-3RSUP6DI.js.map} +0 -0
- /package/client-dist/{dashboard.module-IKIYOYBX.js.map → dashboard.module-PYBGY56O.js.map} +0 -0
- /package/client-dist/{do.module-HCL5N6UW.js.map → do.module-PD25CGC7.js.map} +0 -0
- /package/client-dist/{document-library.module-AL7ZLZAD.js.map → document-library.module-VAFSW6G6.js.map} +0 -0
- /package/client-dist/{embedding-eval.module-QDFOESPD.js.map → embedding-eval.module-2CDS7F52.js.map} +0 -0
- /package/client-dist/{embedding-registry.module-XUGDYKZR.js.map → embedding-registry.module-IZVNOH7A.js.map} +0 -0
- /package/client-dist/{err.module-DVGALBD3.js.map → err.module-3NVH4NC7.js.map} +0 -0
- /package/client-dist/{feedback.module-LFR2FOID.js.map → feedback.module-X5QXB76I.js.map} +0 -0
- /package/client-dist/{host-runtime-mcp.module-LCBJZ6RC.js.map → host-runtime-mcp.module-DNDJGQ6T.js.map} +0 -0
- /package/client-dist/{live-dev-pipeline.module-4D2IPHP6.js.map → live-dev-pipeline.module-HFMV5IJN.js.map} +0 -0
- /package/client-dist/{logs.module-MEPAEBYW.js.map → logs.module-FMAQMKQG.js.map} +0 -0
- /package/client-dist/{main-PK5UCYRP.js.map → main-A3GB5DKS.js.map} +0 -0
- /package/client-dist/{master-control-remote-poc.module-LLBVMF4X.js.map → master-control-remote-poc.module-6X42ODCA.js.map} +0 -0
- /package/client-dist/{mobile-app.module-SDJ2NQM7.js.map → mobile-app.module-WVXOGJ44.js.map} +0 -0
- /package/client-dist/{model-registry.module-ZQCHARJO.js.map → model-registry.module-VJWYB5V7.js.map} +0 -0
- /package/client-dist/{oc.module-5NKEVNFH.js.map → oc.module-WMJBA6KT.js.map} +0 -0
- /package/client-dist/{orc.module-MK5GH4GP.js.map → orc.module-3SBAFMI4.js.map} +0 -0
- /package/client-dist/{project-management.module-Y5CAZ5HP.js.map → project-management.module-ATZOSRRL.js.map} +0 -0
- /package/client-dist/{project-source-routed.module-ZINEDOO3.js.map → project-source-routed.module-M5G7A42W.js.map} +0 -0
- /package/client-dist/{scheduler.module-2O7ZHXQZ.js.map → scheduler.module-EC7PAAAQ.js.map} +0 -0
- /package/client-dist/{session.module-SYN2WJPA.js.map → session.module-FEBNYHS6.js.map} +0 -0
- /package/client-dist/{set.module-TLGYA74I.js.map → set.module-MDPOOWNA.js.map} +0 -0
- /package/client-dist/{setup.module-T6K3OZUU.js.map → setup.module-T7R5ZKVW.js.map} +0 -0
- /package/client-dist/{terminals.module-ARGBB72C.js.map → terminals.module-TQNCPJ2W.js.map} +0 -0
- /package/client-dist/{voice-notes-poc.module-GTOSJJ7N.js.map → voice-notes-poc.module-DBALDSBW.js.map} +0 -0
- /package/client-dist/{wfs.module-OUVID73U.js.map → wfs.module-43UB5OI3.js.map} +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as he}from"./chunk-J5FHTYJI.js";import{a as ge,b as Ce}from"./chunk-N3U7GSXB.js";import{a as me,b as _e}from"./chunk-OGLCZ5PF.js";import{a as Se,b as Y}from"./chunk-L44637OO.js";import{a as ue}from"./chunk-AYMTESIQ.js";import{b as pe}from"./chunk-ZEACNG3V.js";import{d as fe}from"./chunk-LSG4FC4S.js";import{d as U,h as xe}from"./chunk-OQDWKISV.js";import{a as ce}from"./chunk-FLAJXIYW.js";import{f as oe,i as ae,n as re,o as se,p as le,v as de}from"./chunk-EO4DNTT4.js";import{p as Te}from"./chunk-HKFQB2DP.js";import{$a as z,C as y,D as b,Fa as s,Ga as I,Ha as S,Ia as te,J as C,K as v,L as E,M as Q,Q as Z,T as q,Ta as w,U as A,Ua as O,Va as ne,Z as r,aa as $,ab as ie,bb as B,da as _,fa as R,ga as p,h as $e,hb as h,ia as M,k as H,la as u,mb as K,na as ee,oa as F,pa as V,pb as J,qa as a,ra as o,sa as x,ua as k,ub as N,va as f,wa as c,y as X}from"./chunk-TBMJSIBB.js";var ye=$e(Te());var W=(()=>{class t{static SESSION_LIMIT_TYPE="five_hour";static WEEKLY_LIMIT_TYPE="seven_day";static formatResetText(e){if(!e?.resetsAt)return"";let n=new Date(e.resetsAt*1e3),i=new Date,l=n.getTime()-i.getTime();if(l<=0)return"expired";let m=Math.floor(l/6e4),T=Math.floor(m/60),j=m%60;return T>0?`${T}h ${j}m`:`${j}m`}static formatResetTextPrecise(e){if(!e?.resetsAt)return"";let n=new Date(e.resetsAt*1e3),i=new Date,l=Math.floor((n.getTime()-i.getTime())/1e3);if(l<=0)return"expired";let m=Math.floor(l/86400),T=Math.floor(l%86400/3600),j=Math.floor(l%3600/60),g=l%60,D=[];return m&&D.push(`${m}d`),(m||T)&&D.push(`${T}h`),(m||T||j)&&D.push(`${j}m`),D.push(`${g}s`),D.join(" ")}static computeUtilizationPercent(e){if(!e)return 0;let n=typeof e.utilization=="number"?e.utilization:0,i=Math.max(0,Math.min(1,n));return Math.round(i*100)}static computeThresholdPercent(e){if(!e)return 0;let n=typeof e.surpassedThreshold=="number"?e.surpassedThreshold:0,i=Math.max(0,Math.min(1,n));return Math.round(i*100)}static isOverThreshold(e){if(!e)return!1;let n=typeof e.utilization=="number"?e.utilization:0,i=typeof e.surpassedThreshold=="number"?e.surpassedThreshold:1;return n>=i&&i>0}static formatLimitScopeLabel(e){return e?.rateLimitType?e.rateLimitType===t.SESSION_LIMIT_TYPE?"Session":e.rateLimitType===t.WEEKLY_LIMIT_TYPE?"Weekly":e.rateLimitType:""}}return t})();function Me(t,d){if(t&1&&(a(0,"div",0)(1,"span",1),s(2," Rate limit "),o(),a(3,"span",2),s(4,"Scope"),o(),a(5,"span",3),s(6),o(),a(7,"span",2),s(8,"St\xE1tusz"),o(),a(9,"span",3),s(10),o(),a(11,"span",2),s(12,"Utilization"),o(),a(13,"span",4),s(14),o(),a(15,"span",2),s(16,"Reset"),o(),a(17,"span",4),s(18),o(),a(19,"span",2),s(20,"Utols\xF3 \xE9szlel\xE9s"),o(),a(21,"span",5),s(22),z(23,"date"),o()()),t&2){let e=d,n=c();r(6),I(n.limitScopeLabel_$()||"\u2014"),r(3),M("text-neonRed",e.status==="limited")("text-yellow-400",e.status==="allowed_warning")("text-neutral-300",e.status==="allowed"),r(),S(" ",e.status||"\u2014"," "),r(4),S("",n.utilizationPercent_$(),"%"),r(4),I(n.resetText_$()||"\u2014"),r(4),S(" ",B(23,11,e.receivedAt,"yyyy-MM-dd HH:mm:ss")||"\u2014"," ")}}var be=(()=>{class t{claudeCode_AS=y(me);_ccapId="";set ccapId(e){this._ccapId=e?.trim()??"",this.refreshRateLimitState()}get ccapId(){return this._ccapId}rateLimitInfo_$=$(null);utilizationPercent_$=h(()=>W.computeUtilizationPercent(this.rateLimitInfo_$()));resetText_$=h(()=>W.formatResetText(this.rateLimitInfo_$()));limitScopeLabel_$=h(()=>W.formatLimitScopeLabel(this.rateLimitInfo_$()));refreshRateLimitState(){if(!this._ccapId){this.rateLimitInfo_$.set(null);return}this.claudeCode_AS.getRateLimitState({ccapId:this._ccapId}).then(e=>{let n=_e.mapServerItemsToClientInfo(e.items);this.rateLimitInfo_$.set(n)}).catch(e=>{ye.DyFM_Log.warn(`s-cc-rate-limit-info | rate-limit fetch failed | ccapId: ${this._ccapId} | err: ${String(e)}`),this.rateLimitInfo_$.set(null)})}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=b({type:t,selectors:[["app-s-cc-rate-limit-info"]],inputs:{ccapId:"ccapId"},standalone:!0,features:[w],decls:1,vars:1,consts:[[1,"grid","grid-cols-[minmax(8rem,auto)_1fr]","gap-x-3","gap-y-2","text-xs","text-neutral-200"],[1,"col-span-2","text-[11px]","uppercase","tracking-wider","text-neutral-500"],[1,"text-neutral-500","shrink-0"],[1,"whitespace-nowrap"],[1,"whitespace-nowrap","font-mono"],[1,"font-mono","text-[11px]","whitespace-nowrap"]],template:function(n,i){if(n&1&&_(0,Me,24,14,"div",0),n&2){let l;u((l=i.rateLimitInfo_$())?0:-1,l)}},dependencies:[N,J],encapsulation:2})}return t})();function Oe(t,d){if(t&1&&(a(0,"span",1),s(1,"Instance presence"),o(),a(2,"span",4),x(3,"app-s-instance-presence-badge",8),o()),t&2){let e=d;r(3),p("presence",e.presence)("lastHeartbeatAt",e.lastHeartbeatAt)("wsConnected",e.wsConnected)}}function De(t,d){if(t&1&&(a(0,"span",9),s(1,"Run / tev\xE9kenys\xE9g"),o(),a(2,"span",10)(3,"span",11),s(4),o(),a(5,"span",12),s(6),o()(),a(7,"span",1),s(8,"Utols\xF3 aktivit\xE1s"),o(),a(9,"span",13),s(10),z(11,"date"),o(),a(12,"span",1),s(13,"Utols\xF3 \xFCzenet"),o(),a(14,"span",14),s(15),o()),t&2){let e=d;r(4),I(e.activeRunPhase||"\u2014"),r(2),I(e.activitySummary||"\u2014"),r(4),S(" ",B(11,4,e.lastActivityAt,"yyyy-MM-dd HH:mm:ss")||"\u2014"," "),r(5),I(e.lastMessage||"\u2014")}}var we=(()=>{class t{row;presence=void 0;static \u0275fac=function(n){return new(n||t)};static \u0275cmp=b({type:t,selectors:[["app-s-instance-detail-view"]],inputs:{row:"row",presence:"presence"},standalone:!0,features:[w],decls:43,vars:18,consts:[[1,"grid","grid-cols-[minmax(8rem,auto)_1fr]","gap-x-3","gap-y-2","text-xs","text-neutral-200"],[1,"text-neutral-500","shrink-0"],[1,"font-mono","break-all"],[1,"break-all"],[1,"whitespace-nowrap"],[1,"font-mono","whitespace-nowrap"],[1,"mt-2","pt-2","border-t","border-neutral-800"],[3,"ccapId"],[3,"presence","lastHeartbeatAt","wsConnected"],[1,"text-neutral-500","shrink-0","self-start","pt-0.5"],[1,"break-words"],[1,"font-mono","text-[11px]","text-neutral-400","block"],[1,"text-neutral-300"],[1,"font-mono","text-[11px]","whitespace-nowrap"],[1,"break-words","text-neutral-300"]],template:function(n,i){if(n&1&&(a(0,"div",0)(1,"span",1),s(2,"instanceKey"),o(),a(3,"span",2),s(4),o(),a(5,"span",1),s(6,"N\xE9v"),o(),a(7,"span",3),s(8),o(),a(9,"span",1),s(10,"St\xE1tusz"),o(),a(11,"span",4),s(12),o(),_(13,Oe,4,3),a(14,"span",1),s(15,"Session presence"),o(),a(16,"span",4),s(17),o(),_(18,De,16,7),a(19,"span",1),s(20,"MAC"),o(),a(21,"span",2),s(22),o(),a(23,"span",1),s(24,"Install path"),o(),a(25,"span",2),s(26),o(),a(27,"span",1),s(28,"hostName"),o(),a(29,"span",3),s(30),o(),a(31,"span",1),s(32,"registry __created"),o(),a(33,"span",5),s(34),z(35,"date"),o(),a(36,"span",1),s(37,"registry __updated"),o(),a(38,"span",5),s(39),z(40,"date"),o()(),a(41,"div",6),x(42,"app-s-cc-rate-limit-info",7),o()),n&2){let l,m;r(4),I(i.row.registry.instanceKey||"\u2014"),r(4),I((i.row.instanceData==null||i.row.instanceData.name==null?null:i.row.instanceData.name.trim())||"\u2014"),r(4),I((i.row.instanceData==null?null:i.row.instanceData.status)||"\u2014"),r(),u((l=i.presence)?13:-1,l),r(4),S(" ",(i.row.instanceData==null||i.row.instanceData.sessionStatuses==null||i.row.instanceData.sessionStatuses[0]==null?null:i.row.instanceData.sessionStatuses[0].presence)||"\u2014"," "),r(),u((m=i.row.instanceData==null||i.row.instanceData.sessionStatuses==null?null:i.row.instanceData.sessionStatuses[0])?18:-1,m),r(4),I(i.row.registry.primaryMacAddress||"\u2014"),r(4),I(i.row.registry.installLocationPath||"\u2014"),r(4),I(i.row.registry.hostName||"\u2014"),r(4),S(" ",B(35,12,i.row.registry.__created,"yyyy-MM-dd HH:mm:ss")||"\u2014"," "),r(5),S(" ",B(40,15,i.row.registry.__updated,"yyyy-MM-dd HH:mm:ss")||"\u2014"," "),r(3),p("ccapId",i.row.registry.instanceKey||"")}},dependencies:[N,J,be,Y],encapsulation:2})}return t})();var Ae=(t,d)=>d.instanceKey,Re=t=>({"bg-ccapAccent/10":t});function Fe(t,d){if(t&1&&x(0,"app-s-instance-presence-badge",5),t&2){let e=d;p("presence",e.presence)("lastHeartbeatAt",e.lastHeartbeatAt)("wsConnected",e.wsConnected)("showLabel",!1)}}function Ve(t,d){t&1&&(a(0,"span",6),s(1,"(local)"),o())}function ze(t,d){t&1&&x(0,"span",7)}function Le(t,d){if(t&1){let e=k();a(0,"div",2)(1,"button",4),f("click",function(){let i,l=C(e).$implicit,m=c();return v(m.handleSelectInstance((i=l.instanceKey)!==null&&i!==void 0?i:""))}),_(2,Fe,1,4,"app-s-instance-presence-badge",5),s(3),_(4,Ve,2,0,"span",6)(5,ze,1,0,"span",7),o(),a(6,"button",8),f("click",function(){let i,l=C(e).$implicit,m=c();return v(m.handleInfoClick((i=l.instanceKey)!==null&&i!==void 0?i:""))}),s(7," i "),o()()}if(t&2){let e,n=d.$implicit,i=c();r(),M("border-ccapAccent",i.isSelected(n))("text-ccapAccent",i.isSelected(n))("border-neonDefault",!i.isSelected(n))("text-neutral-400",!i.isSelected(n))("hover:text-neutral-200",!i.isSelected(n))("hover:border-neutral-500",!i.isSelected(n)),p("ngClass",ne(17,Re,i.isSelected(n))),r(),u((e=i.getPresenceForRow(n))?2:-1,e),r(),S(" ",i.getDisplayLabel(n)," "),r(),u(i.isLocal(n)?4:-1),r(),u(i.getActiveSessionForRow(n)?5:-1)}}function Pe(t,d){t&1&&(a(0,"span",3),s(1,"loading..."),o())}var Ee=(()=>{class t{peiContext_DS=y(ue);presenceMap=new Map;activeSessionMap=new Map;infoRequested=new Z;instances_$=h(()=>this.peiContext_DS.instanceList_$());selectedCcapId_$=h(()=>this.peiContext_DS.activeCcapId_$());localKey_$=h(()=>this.peiContext_DS.localInstanceKey_$());ngOnInit(){this.peiContext_DS.initialize()}handleSelectInstance(e){this.peiContext_DS.selectInstance(e)}handleInfoClick(e){this.infoRequested.emit({instanceKey:e})}getDisplayLabel(e){let n=e.hostName??"",i=(e.instanceKey??"").slice(-6);return n?`${n} (${i})`:i||"?"}isSelected(e){return(e.instanceKey??"")===this.selectedCcapId_$()}isLocal(e){return(e.instanceKey??"")===this.localKey_$()}getPresenceForRow(e){let n=e.instanceKey??"";return n?this.presenceMap.get(n)??null:null}getActiveSessionForRow(e){let n=e.instanceKey??"";return n?this.activeSessionMap.get(n)===!0:!1}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=b({type:t,selectors:[["app-s-instance-selector"]],hostAttrs:[1,"block"],inputs:{presenceMap:"presenceMap",activeSessionMap:"activeSessionMap"},outputs:{infoRequested:"infoRequested"},standalone:!0,features:[w],decls:6,vars:1,consts:[[1,"flex","gap-1","flex-wrap","items-center"],[1,"text-[10px]","text-neutral-500","mr-1","uppercase","tracking-wider"],[1,"flex","items-center","gap-0.5","group"],[1,"text-[10px]","text-neutral-600","italic"],[1,"px-2","py-0.5","text-[11px]","rounded-full","border","transition-colors","flex","items-center","gap-1",3,"click","ngClass"],[3,"presence","lastHeartbeatAt","wsConnected","showLabel"],[1,"ml-0.5","text-[9px]","text-neutral-500"],["title","Akt\xEDv session fut ezen az instance-en","aria-label","Akt\xEDv session fut ezen az instance-en","data-testid","s-instance-active-session-dot",1,"inline-block","w-1.5","h-1.5","rounded-full","bg-yellow-400","animate-pulse","shrink-0"],["type","button","title","Instance details","aria-label","Show instance details","data-testid","s-instance-selector-info-btn",1,"text-[11px]","leading-none","w-4","h-4","rounded-full","border","border-neutral-700","text-neutral-500","hover:text-ccapAccent","hover:border-ccapAccent","transition-colors","flex","items-center","justify-center",3,"click"]],template:function(n,i){n&1&&(a(0,"div",0)(1,"span",1),s(2,"Instance:"),o(),F(3,Le,8,19,"div",2,Ae),_(5,Pe,2,0,"span",3),o()),n&2&&(r(3),V(i.instances_$()),r(2),u(i.instances_$().length?-1:5))},dependencies:[N,K,Y],encapsulation:2})}return t})();function je(t,d){if(t&1&&x(0,"app-s-instance-detail-view",3),t&2){let e=c(2);p("row",d)("presence",e.getPresenceForSelectedRow())}}function Be(t,d){if(t&1){let e=k();a(0,"app-s-modal",2),f("closed",function(){C(e);let i=c();return v(i.handleModalClosed())}),_(1,je,1,2,"app-s-instance-detail-view",3),o()}if(t&2){let e,n=c();p("isOpen",!0)("title",n.modalTitle_$())("maxWidth","lg"),r(),u((e=n.selectedRow_$())?1:-1,e)}}var en=(()=>{class t{instanceRegistry_DS=y(pe);runtimeInstances_DS=y(fe);presenceMap=new Map;activeSessionMap=new Map;selectedInstanceKey_$=$(null);viewRows_$=h(()=>Se.buildViewRows(this.instanceRegistry_DS.list_$(),this.runtimeInstances_DS.ccapInstanceList_$()));selectedRow_$=h(()=>{let e=this.selectedInstanceKey_$();return e?this.viewRows_$().find(n=>(n.registry.instanceKey??"")===e)??null:null});isModalOpen_$=h(()=>this.selectedRow_$()!==null);modalTitle_$=h(()=>{let e=this.selectedRow_$();if(!e)return"";let n=e.registry.hostName??"",i=e.registry.instanceKey??"";return n?`Instance \u2014 ${n}`:`Instance \u2014 ${i.slice(-6)||"?"}`});handleInfoRequested(e){this.selectedInstanceKey_$.set(e.instanceKey)}getPresenceForSelectedRow(){let e=this.selectedRow_$();if(!e)return;let n=e.registry.instanceKey??"";if(n)return this.presenceMap.get(n)}handleModalClosed(){this.selectedInstanceKey_$.set(null)}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=b({type:t,selectors:[["app-s-instance-chip-row-with-info"]],hostAttrs:[1,"block"],inputs:{presenceMap:"presenceMap",activeSessionMap:"activeSessionMap"},standalone:!0,features:[w],decls:2,vars:3,consts:[[3,"infoRequested","presenceMap","activeSessionMap"],[3,"isOpen","title","maxWidth"],[3,"closed","isOpen","title","maxWidth"],[3,"row","presence"]],template:function(n,i){n&1&&(a(0,"app-s-instance-selector",0),f("infoRequested",function(m){return i.handleInfoRequested(m)}),o(),_(1,Be,2,4,"app-s-modal",1)),n&2&&(p("presenceMap",i.presenceMap)("activeSessionMap",i.activeSessionMap),r(),u(i.isModalOpen_$()?1:-1))},dependencies:[N,Ee,ce,we],encapsulation:2})}return t})();var G=(()=>{class t{currentlyOpenId_$=$(null);isOpen(e){return h(()=>this.currentlyOpenId_$()===e)}setOpen(e){this.currentlyOpenId_$.set(e)}toggle(e){this.currentlyOpenId_$()===e?this.currentlyOpenId_$.set(null):this.currentlyOpenId_$.set(e)}static \u0275fac=function(n){return new(n||t)};static \u0275prov=X({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();var P=function(t){return t.schedule="schedule",t.quickcast="quickcast",t.coordinator="coordinator",t.quickSettings="quick-settings",t}(P||{});var ke=(t,d)=>d._id,Ke=()=>["border-neonAmber/60","text-neonAmber","shadow-neon-glow-orange","hover:border-neonAmber","hover:bg-neonAmber/10"],Ne=()=>["border-neutral-700","text-neutral-600"];function Ge(t,d){if(t&1&&(a(0,"span",4),s(1),o()),t&2){let e=c();r(),S(" ",e.sessionJobs_$().length>9?"9+":e.sessionJobs_$().length," ")}}function He(t,d){t&1&&(E(),a(0,"svg",15),x(1,"path",22),o())}function Je(t,d){t&1&&(E(),a(0,"svg",15),x(1,"rect",23)(2,"rect",24),o())}function Qe(t,d){t&1&&(a(0,"span",18),s(1," \u23F8 paused "),o())}function qe(t,d){if(t&1&&(a(0,"span",20),s(1),z(2,"date"),o()),t&2){let e=c().$implicit;r(),S(" ",B(2,1,e.nextDueAt,"yyyy-MM-dd HH:mm")," ")}}function Ye(t,d){t&1&&(a(0,"span",21),s(1,"\u2014"),o())}function We(t,d){if(t&1&&(a(0,"span",27),s(1),o()),t&2){let e=d.$implicit,n=c(5);p("ngClass",n.getExecutionBadgeClass(e.status))("title",n.buildExecutionBadgeTooltip(e)),r(),S(" ",n.getExecutionBadgeLabel(e.status)," ")}}function Ue(t,d){if(t&1&&(a(0,"div",25)(1,"span",26),s(2,"Trigger-ek:"),o(),F(3,We,2,3,"span",27,ke),o()),t&2){let e=c();r(3),V(e)}}function Xe(t,d){t&1&&_(0,Ue,5,0,"div",25),t&2&&u(d.length>0?0:-1)}function Ze(t,d){if(t&1){let e=k();a(0,"div",9)(1,"div",6)(2,"div",10)(3,"span",11),s(4),o(),a(5,"span",12),s(6),z(7,"schSchedulePresetLabel"),o()(),a(8,"div",13)(9,"button",14),f("click",function(){let i=C(e).$implicit,l=c(2);return v(l.handleTogglePaused(i))}),_(10,He,2,0,":svg:svg",15)(11,Je,3,0,":svg:svg",15),o(),a(12,"button",16),f("click",function(){let i=C(e).$implicit,l=c(2);return v(l.handleTriggerNow(i))}),E(),a(13,"svg",15),x(14,"path",17),o()()()(),_(15,Qe,2,0,"span",18),Q(),a(16,"div",19)(17,"span"),s(18,"K\xF6vetkez\u0151:"),o(),_(19,qe,3,4,"span",20)(20,Ye,2,0,"span",21),o(),_(21,Xe,1,1),o()}if(t&2){let e,n,i,l,m,T,j,g=d.$implicit,D=c(2);r(3),p("title",(e=g.name)!==null&&e!==void 0?e:""),r(),S(" ",((n=g.name)!==null&&n!==void 0?n:"").trim()||"Unnamed schedule"," "),r(2),S(" ",ie(7,28,g.schedule)," "),r(3),M("border-neonCyan",g.paused)("text-neonCyan",g.paused)("hover:bg-neonCyan",g.paused)("hover:bg-opacity-10",g.paused)("border-neutral-500",!g.paused)("text-neutral-400",!g.paused)("hover:border-neutral-300",!g.paused)("hover:text-neutral-200",!g.paused),p("disabled",D.busyJobIds_$().has((i=g._id)!==null&&i!==void 0?i:""))("title",D.busyJobIds_$().has((l=g._id)!==null&&l!==void 0?l:"")?"Folyamatban\u2026":g.paused?"Folytat\xE1s (Resume)":"Sz\xFCneteltet\xE9s (Pause)"),R("aria-label",g.paused?"Resume schedule":"Pause schedule"),r(),u(g.paused?10:11),r(2),p("disabled",D.busyJobIds_$().has((m=g._id)!==null&&m!==void 0?m:""))("title",D.busyJobIds_$().has((T=g._id)!==null&&T!==void 0?T:"")?"Ind\xEDt\xE1s folyamatban\u2026":"Most futtatni (Trigger Now)"),r(3),u(g.paused?15:-1),r(4),u(g.nextDueAt?19:20),r(2),u((j=D.getRecentExecutions(g))?21:-1,j)}}function et(t,d){if(t&1){let e=k();a(0,"div",5)(1,"div",6)(2,"span",7),s(3),o(),a(4,"button",8),f("click",function(){C(e);let i=c();return v(i.handleToggle())}),s(5," \xD7 "),o()(),F(6,Ze,22,30,"div",9,ke),o()}if(t&2){let e=c();r(3),S(" Schedule (",e.sessionJobs_$().length,") "),r(3),V(e.sessionJobs_$())}}var _n=(()=>{class t{sessionId=A.required();scheduledJobs_DS=y(ge);overlayCoordinator_CS=y(G);OVERLAY_ID=P.schedule;isOpen_$=this.overlayCoordinator_CS.isOpen(this.OVERLAY_ID);busyJobIds_$=$(new Set);sessionJobs_$=h(()=>{let e=(this.sessionId()??"").trim();return e?this.scheduledJobs_DS.jobs_$().filter(i=>i.enabled===!1?!1:(i.target?.payload?.sessionId??"").trim()===e):[]});hasSchedule_$=h(()=>this.sessionJobs_$().length>0);ngOnInit(){this.scheduledJobs_DS.jobs_$().length===0&&this.scheduledJobs_DS.loadAll()}handleToggle(){this.overlayCoordinator_CS.toggle(this.OVERLAY_ID)}handleTriggerNow(e){return H(this,null,function*(){let n=(e._id??"").trim();if(n&&!this.busyJobIds_$().has(n)){this.busyJobIds_$.update(i=>{let l=new Set(i);return l.add(n),l});try{yield this.scheduledJobs_DS.triggerNow({jobId:n,reason:"session-overlay-manual"})}finally{this.busyJobIds_$.update(i=>{let l=new Set(i);return l.delete(n),l})}}})}handleTogglePaused(e){return H(this,null,function*(){let n=(e._id??"").trim();if(!n||this.busyJobIds_$().has(n))return;let i=!e.paused;this.busyJobIds_$.update(l=>{let m=new Set(l);return m.add(n),m});try{yield this.scheduledJobs_DS.togglePaused(n,i)}finally{this.busyJobIds_$.update(l=>{let m=new Set(l);return m.delete(n),m})}})}getRecentExecutions(e){let n=e._id??"";return n?this.scheduledJobs_DS.recentExecutions_$().get(n)??[]:[]}getExecutionBadgeClass(e){switch(e){case"triggered":return"bg-emerald-500/20 text-emerald-400";case"completed":return"bg-sky-500/20 text-sky-400";case"skipped":return"bg-neutral-600/30 text-neutral-400";case"failed":return"bg-red-500/20 text-red-400";case"cancelled":return"bg-amber-500/20 text-amber-400";case"dry-run":return"bg-purple-500/20 text-purple-400";default:return"bg-neutral-700/40 text-neutral-500"}}getExecutionBadgeLabel(e){switch(e){case"triggered":return"OK";case"completed":return"Done";case"skipped":return"Skip";case"failed":return"Fail";case"cancelled":return"Cancel";case"dry-run":return"Dry";default:return"?"}}buildExecutionBadgeTooltip(e){let n=[];return e.scheduledAt&&(n.push(new Date(e.scheduledAt).toISOString().slice(0,16).replace("T"," ")),n.push(" \u2014 ")),n.push(e.status??"?"),e.skipReason&&n.push(` (${e.skipReason})`),e.status==="failed"&&e.errorDetails?.message&&n.push(`: ${e.errorDetails.message}`),n.join("")}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=b({type:t,selectors:[["app-s-session-schedule-overlay"]],hostAttrs:[1,"absolute","bottom-4","left-0","z-30","pointer-events-none"],inputs:{sessionId:[1,"sessionId"]},standalone:!0,features:[w],decls:6,vars:12,consts:[[1,"flex","items-end","gap-2","pointer-events-auto"],["type","button","aria-label","Schedule",1,"relative","flex","items-center","justify-center","h-8","w-7","bg-neutral-900","border-2","border-l-0","rounded-r-lg","transition-all","duration-200","ease-out","disabled:cursor-not-allowed",3,"click","disabled","title","ngClass"],["fill","none","stroke","currentColor","viewBox","0 0 24 24","aria-hidden","true",1,"w-4","h-4"],["stroke-linecap","round","stroke-linejoin","round","stroke-width","2","d",`M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5
|
|
1
|
+
import{a as he}from"./chunk-H426VGC4.js";import{a as ge,b as Ce}from"./chunk-K5SBQVP3.js";import{a as me,b as _e}from"./chunk-IT32VCIH.js";import{a as Se,b as Y}from"./chunk-L44637OO.js";import{a as ue}from"./chunk-66F6YPRF.js";import{b as pe}from"./chunk-ELA6J2TW.js";import{d as fe}from"./chunk-7GOR2GBC.js";import{d as U,h as xe}from"./chunk-Y2L3PCW4.js";import{a as ce}from"./chunk-FLAJXIYW.js";import{f as oe,i as ae,n as re,o as se,p as le,v as de}from"./chunk-EO4DNTT4.js";import{p as Te}from"./chunk-KNX6PXMA.js";import{$a as z,C as y,D as b,Fa as s,Ga as I,Ha as S,Ia as te,J as C,K as v,L as E,M as Q,Q as Z,T as q,Ta as w,U as A,Ua as O,Va as ne,Z as r,aa as $,ab as ie,bb as B,da as _,fa as R,ga as p,h as $e,hb as h,ia as M,k as H,la as u,mb as K,na as ee,oa as F,pa as V,pb as J,qa as a,ra as o,sa as x,ua as k,ub as N,va as f,wa as c,y as X}from"./chunk-TBMJSIBB.js";var ye=$e(Te());var W=(()=>{class t{static SESSION_LIMIT_TYPE="five_hour";static WEEKLY_LIMIT_TYPE="seven_day";static formatResetText(e){if(!e?.resetsAt)return"";let n=new Date(e.resetsAt*1e3),i=new Date,l=n.getTime()-i.getTime();if(l<=0)return"expired";let m=Math.floor(l/6e4),T=Math.floor(m/60),j=m%60;return T>0?`${T}h ${j}m`:`${j}m`}static formatResetTextPrecise(e){if(!e?.resetsAt)return"";let n=new Date(e.resetsAt*1e3),i=new Date,l=Math.floor((n.getTime()-i.getTime())/1e3);if(l<=0)return"expired";let m=Math.floor(l/86400),T=Math.floor(l%86400/3600),j=Math.floor(l%3600/60),g=l%60,D=[];return m&&D.push(`${m}d`),(m||T)&&D.push(`${T}h`),(m||T||j)&&D.push(`${j}m`),D.push(`${g}s`),D.join(" ")}static computeUtilizationPercent(e){if(!e)return 0;let n=typeof e.utilization=="number"?e.utilization:0,i=Math.max(0,Math.min(1,n));return Math.round(i*100)}static computeThresholdPercent(e){if(!e)return 0;let n=typeof e.surpassedThreshold=="number"?e.surpassedThreshold:0,i=Math.max(0,Math.min(1,n));return Math.round(i*100)}static isOverThreshold(e){if(!e)return!1;let n=typeof e.utilization=="number"?e.utilization:0,i=typeof e.surpassedThreshold=="number"?e.surpassedThreshold:1;return n>=i&&i>0}static formatLimitScopeLabel(e){return e?.rateLimitType?e.rateLimitType===t.SESSION_LIMIT_TYPE?"Session":e.rateLimitType===t.WEEKLY_LIMIT_TYPE?"Weekly":e.rateLimitType:""}}return t})();function Me(t,d){if(t&1&&(a(0,"div",0)(1,"span",1),s(2," Rate limit "),o(),a(3,"span",2),s(4,"Scope"),o(),a(5,"span",3),s(6),o(),a(7,"span",2),s(8,"St\xE1tusz"),o(),a(9,"span",3),s(10),o(),a(11,"span",2),s(12,"Utilization"),o(),a(13,"span",4),s(14),o(),a(15,"span",2),s(16,"Reset"),o(),a(17,"span",4),s(18),o(),a(19,"span",2),s(20,"Utols\xF3 \xE9szlel\xE9s"),o(),a(21,"span",5),s(22),z(23,"date"),o()()),t&2){let e=d,n=c();r(6),I(n.limitScopeLabel_$()||"\u2014"),r(3),M("text-neonRed",e.status==="limited")("text-yellow-400",e.status==="allowed_warning")("text-neutral-300",e.status==="allowed"),r(),S(" ",e.status||"\u2014"," "),r(4),S("",n.utilizationPercent_$(),"%"),r(4),I(n.resetText_$()||"\u2014"),r(4),S(" ",B(23,11,e.receivedAt,"yyyy-MM-dd HH:mm:ss")||"\u2014"," ")}}var be=(()=>{class t{claudeCode_AS=y(me);_ccapId="";set ccapId(e){this._ccapId=e?.trim()??"",this.refreshRateLimitState()}get ccapId(){return this._ccapId}rateLimitInfo_$=$(null);utilizationPercent_$=h(()=>W.computeUtilizationPercent(this.rateLimitInfo_$()));resetText_$=h(()=>W.formatResetText(this.rateLimitInfo_$()));limitScopeLabel_$=h(()=>W.formatLimitScopeLabel(this.rateLimitInfo_$()));refreshRateLimitState(){if(!this._ccapId){this.rateLimitInfo_$.set(null);return}this.claudeCode_AS.getRateLimitState({ccapId:this._ccapId}).then(e=>{let n=_e.mapServerItemsToClientInfo(e.items);this.rateLimitInfo_$.set(n)}).catch(e=>{ye.DyFM_Log.warn(`s-cc-rate-limit-info | rate-limit fetch failed | ccapId: ${this._ccapId} | err: ${String(e)}`),this.rateLimitInfo_$.set(null)})}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=b({type:t,selectors:[["app-s-cc-rate-limit-info"]],inputs:{ccapId:"ccapId"},standalone:!0,features:[w],decls:1,vars:1,consts:[[1,"grid","grid-cols-[minmax(8rem,auto)_1fr]","gap-x-3","gap-y-2","text-xs","text-neutral-200"],[1,"col-span-2","text-[11px]","uppercase","tracking-wider","text-neutral-500"],[1,"text-neutral-500","shrink-0"],[1,"whitespace-nowrap"],[1,"whitespace-nowrap","font-mono"],[1,"font-mono","text-[11px]","whitespace-nowrap"]],template:function(n,i){if(n&1&&_(0,Me,24,14,"div",0),n&2){let l;u((l=i.rateLimitInfo_$())?0:-1,l)}},dependencies:[N,J],encapsulation:2})}return t})();function Oe(t,d){if(t&1&&(a(0,"span",1),s(1,"Instance presence"),o(),a(2,"span",4),x(3,"app-s-instance-presence-badge",8),o()),t&2){let e=d;r(3),p("presence",e.presence)("lastHeartbeatAt",e.lastHeartbeatAt)("wsConnected",e.wsConnected)}}function De(t,d){if(t&1&&(a(0,"span",9),s(1,"Run / tev\xE9kenys\xE9g"),o(),a(2,"span",10)(3,"span",11),s(4),o(),a(5,"span",12),s(6),o()(),a(7,"span",1),s(8,"Utols\xF3 aktivit\xE1s"),o(),a(9,"span",13),s(10),z(11,"date"),o(),a(12,"span",1),s(13,"Utols\xF3 \xFCzenet"),o(),a(14,"span",14),s(15),o()),t&2){let e=d;r(4),I(e.activeRunPhase||"\u2014"),r(2),I(e.activitySummary||"\u2014"),r(4),S(" ",B(11,4,e.lastActivityAt,"yyyy-MM-dd HH:mm:ss")||"\u2014"," "),r(5),I(e.lastMessage||"\u2014")}}var we=(()=>{class t{row;presence=void 0;static \u0275fac=function(n){return new(n||t)};static \u0275cmp=b({type:t,selectors:[["app-s-instance-detail-view"]],inputs:{row:"row",presence:"presence"},standalone:!0,features:[w],decls:43,vars:18,consts:[[1,"grid","grid-cols-[minmax(8rem,auto)_1fr]","gap-x-3","gap-y-2","text-xs","text-neutral-200"],[1,"text-neutral-500","shrink-0"],[1,"font-mono","break-all"],[1,"break-all"],[1,"whitespace-nowrap"],[1,"font-mono","whitespace-nowrap"],[1,"mt-2","pt-2","border-t","border-neutral-800"],[3,"ccapId"],[3,"presence","lastHeartbeatAt","wsConnected"],[1,"text-neutral-500","shrink-0","self-start","pt-0.5"],[1,"break-words"],[1,"font-mono","text-[11px]","text-neutral-400","block"],[1,"text-neutral-300"],[1,"font-mono","text-[11px]","whitespace-nowrap"],[1,"break-words","text-neutral-300"]],template:function(n,i){if(n&1&&(a(0,"div",0)(1,"span",1),s(2,"instanceKey"),o(),a(3,"span",2),s(4),o(),a(5,"span",1),s(6,"N\xE9v"),o(),a(7,"span",3),s(8),o(),a(9,"span",1),s(10,"St\xE1tusz"),o(),a(11,"span",4),s(12),o(),_(13,Oe,4,3),a(14,"span",1),s(15,"Session presence"),o(),a(16,"span",4),s(17),o(),_(18,De,16,7),a(19,"span",1),s(20,"MAC"),o(),a(21,"span",2),s(22),o(),a(23,"span",1),s(24,"Install path"),o(),a(25,"span",2),s(26),o(),a(27,"span",1),s(28,"hostName"),o(),a(29,"span",3),s(30),o(),a(31,"span",1),s(32,"registry __created"),o(),a(33,"span",5),s(34),z(35,"date"),o(),a(36,"span",1),s(37,"registry __updated"),o(),a(38,"span",5),s(39),z(40,"date"),o()(),a(41,"div",6),x(42,"app-s-cc-rate-limit-info",7),o()),n&2){let l,m;r(4),I(i.row.registry.instanceKey||"\u2014"),r(4),I((i.row.instanceData==null||i.row.instanceData.name==null?null:i.row.instanceData.name.trim())||"\u2014"),r(4),I((i.row.instanceData==null?null:i.row.instanceData.status)||"\u2014"),r(),u((l=i.presence)?13:-1,l),r(4),S(" ",(i.row.instanceData==null||i.row.instanceData.sessionStatuses==null||i.row.instanceData.sessionStatuses[0]==null?null:i.row.instanceData.sessionStatuses[0].presence)||"\u2014"," "),r(),u((m=i.row.instanceData==null||i.row.instanceData.sessionStatuses==null?null:i.row.instanceData.sessionStatuses[0])?18:-1,m),r(4),I(i.row.registry.primaryMacAddress||"\u2014"),r(4),I(i.row.registry.installLocationPath||"\u2014"),r(4),I(i.row.registry.hostName||"\u2014"),r(4),S(" ",B(35,12,i.row.registry.__created,"yyyy-MM-dd HH:mm:ss")||"\u2014"," "),r(5),S(" ",B(40,15,i.row.registry.__updated,"yyyy-MM-dd HH:mm:ss")||"\u2014"," "),r(3),p("ccapId",i.row.registry.instanceKey||"")}},dependencies:[N,J,be,Y],encapsulation:2})}return t})();var Ae=(t,d)=>d.instanceKey,Re=t=>({"bg-ccapAccent/10":t});function Fe(t,d){if(t&1&&x(0,"app-s-instance-presence-badge",5),t&2){let e=d;p("presence",e.presence)("lastHeartbeatAt",e.lastHeartbeatAt)("wsConnected",e.wsConnected)("showLabel",!1)}}function Ve(t,d){t&1&&(a(0,"span",6),s(1,"(local)"),o())}function ze(t,d){t&1&&x(0,"span",7)}function Le(t,d){if(t&1){let e=k();a(0,"div",2)(1,"button",4),f("click",function(){let i,l=C(e).$implicit,m=c();return v(m.handleSelectInstance((i=l.instanceKey)!==null&&i!==void 0?i:""))}),_(2,Fe,1,4,"app-s-instance-presence-badge",5),s(3),_(4,Ve,2,0,"span",6)(5,ze,1,0,"span",7),o(),a(6,"button",8),f("click",function(){let i,l=C(e).$implicit,m=c();return v(m.handleInfoClick((i=l.instanceKey)!==null&&i!==void 0?i:""))}),s(7," i "),o()()}if(t&2){let e,n=d.$implicit,i=c();r(),M("border-ccapAccent",i.isSelected(n))("text-ccapAccent",i.isSelected(n))("border-neonDefault",!i.isSelected(n))("text-neutral-400",!i.isSelected(n))("hover:text-neutral-200",!i.isSelected(n))("hover:border-neutral-500",!i.isSelected(n)),p("ngClass",ne(17,Re,i.isSelected(n))),r(),u((e=i.getPresenceForRow(n))?2:-1,e),r(),S(" ",i.getDisplayLabel(n)," "),r(),u(i.isLocal(n)?4:-1),r(),u(i.getActiveSessionForRow(n)?5:-1)}}function Pe(t,d){t&1&&(a(0,"span",3),s(1,"loading..."),o())}var Ee=(()=>{class t{peiContext_DS=y(ue);presenceMap=new Map;activeSessionMap=new Map;infoRequested=new Z;instances_$=h(()=>this.peiContext_DS.instanceList_$());selectedCcapId_$=h(()=>this.peiContext_DS.activeCcapId_$());localKey_$=h(()=>this.peiContext_DS.localInstanceKey_$());ngOnInit(){this.peiContext_DS.initialize()}handleSelectInstance(e){this.peiContext_DS.selectInstance(e)}handleInfoClick(e){this.infoRequested.emit({instanceKey:e})}getDisplayLabel(e){let n=e.hostName??"",i=(e.instanceKey??"").slice(-6);return n?`${n} (${i})`:i||"?"}isSelected(e){return(e.instanceKey??"")===this.selectedCcapId_$()}isLocal(e){return(e.instanceKey??"")===this.localKey_$()}getPresenceForRow(e){let n=e.instanceKey??"";return n?this.presenceMap.get(n)??null:null}getActiveSessionForRow(e){let n=e.instanceKey??"";return n?this.activeSessionMap.get(n)===!0:!1}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=b({type:t,selectors:[["app-s-instance-selector"]],hostAttrs:[1,"block"],inputs:{presenceMap:"presenceMap",activeSessionMap:"activeSessionMap"},outputs:{infoRequested:"infoRequested"},standalone:!0,features:[w],decls:6,vars:1,consts:[[1,"flex","gap-1","flex-wrap","items-center"],[1,"text-[10px]","text-neutral-500","mr-1","uppercase","tracking-wider"],[1,"flex","items-center","gap-0.5","group"],[1,"text-[10px]","text-neutral-600","italic"],[1,"px-2","py-0.5","text-[11px]","rounded-full","border","transition-colors","flex","items-center","gap-1",3,"click","ngClass"],[3,"presence","lastHeartbeatAt","wsConnected","showLabel"],[1,"ml-0.5","text-[9px]","text-neutral-500"],["title","Akt\xEDv session fut ezen az instance-en","aria-label","Akt\xEDv session fut ezen az instance-en","data-testid","s-instance-active-session-dot",1,"inline-block","w-1.5","h-1.5","rounded-full","bg-yellow-400","animate-pulse","shrink-0"],["type","button","title","Instance details","aria-label","Show instance details","data-testid","s-instance-selector-info-btn",1,"text-[11px]","leading-none","w-4","h-4","rounded-full","border","border-neutral-700","text-neutral-500","hover:text-ccapAccent","hover:border-ccapAccent","transition-colors","flex","items-center","justify-center",3,"click"]],template:function(n,i){n&1&&(a(0,"div",0)(1,"span",1),s(2,"Instance:"),o(),F(3,Le,8,19,"div",2,Ae),_(5,Pe,2,0,"span",3),o()),n&2&&(r(3),V(i.instances_$()),r(2),u(i.instances_$().length?-1:5))},dependencies:[N,K,Y],encapsulation:2})}return t})();function je(t,d){if(t&1&&x(0,"app-s-instance-detail-view",3),t&2){let e=c(2);p("row",d)("presence",e.getPresenceForSelectedRow())}}function Be(t,d){if(t&1){let e=k();a(0,"app-s-modal",2),f("closed",function(){C(e);let i=c();return v(i.handleModalClosed())}),_(1,je,1,2,"app-s-instance-detail-view",3),o()}if(t&2){let e,n=c();p("isOpen",!0)("title",n.modalTitle_$())("maxWidth","lg"),r(),u((e=n.selectedRow_$())?1:-1,e)}}var en=(()=>{class t{instanceRegistry_DS=y(pe);runtimeInstances_DS=y(fe);presenceMap=new Map;activeSessionMap=new Map;selectedInstanceKey_$=$(null);viewRows_$=h(()=>Se.buildViewRows(this.instanceRegistry_DS.list_$(),this.runtimeInstances_DS.ccapInstanceList_$()));selectedRow_$=h(()=>{let e=this.selectedInstanceKey_$();return e?this.viewRows_$().find(n=>(n.registry.instanceKey??"")===e)??null:null});isModalOpen_$=h(()=>this.selectedRow_$()!==null);modalTitle_$=h(()=>{let e=this.selectedRow_$();if(!e)return"";let n=e.registry.hostName??"",i=e.registry.instanceKey??"";return n?`Instance \u2014 ${n}`:`Instance \u2014 ${i.slice(-6)||"?"}`});handleInfoRequested(e){this.selectedInstanceKey_$.set(e.instanceKey)}getPresenceForSelectedRow(){let e=this.selectedRow_$();if(!e)return;let n=e.registry.instanceKey??"";if(n)return this.presenceMap.get(n)}handleModalClosed(){this.selectedInstanceKey_$.set(null)}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=b({type:t,selectors:[["app-s-instance-chip-row-with-info"]],hostAttrs:[1,"block"],inputs:{presenceMap:"presenceMap",activeSessionMap:"activeSessionMap"},standalone:!0,features:[w],decls:2,vars:3,consts:[[3,"infoRequested","presenceMap","activeSessionMap"],[3,"isOpen","title","maxWidth"],[3,"closed","isOpen","title","maxWidth"],[3,"row","presence"]],template:function(n,i){n&1&&(a(0,"app-s-instance-selector",0),f("infoRequested",function(m){return i.handleInfoRequested(m)}),o(),_(1,Be,2,4,"app-s-modal",1)),n&2&&(p("presenceMap",i.presenceMap)("activeSessionMap",i.activeSessionMap),r(),u(i.isModalOpen_$()?1:-1))},dependencies:[N,Ee,ce,we],encapsulation:2})}return t})();var G=(()=>{class t{currentlyOpenId_$=$(null);isOpen(e){return h(()=>this.currentlyOpenId_$()===e)}setOpen(e){this.currentlyOpenId_$.set(e)}toggle(e){this.currentlyOpenId_$()===e?this.currentlyOpenId_$.set(null):this.currentlyOpenId_$.set(e)}static \u0275fac=function(n){return new(n||t)};static \u0275prov=X({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();var P=function(t){return t.schedule="schedule",t.quickcast="quickcast",t.coordinator="coordinator",t.quickSettings="quick-settings",t}(P||{});var ke=(t,d)=>d._id,Ke=()=>["border-neonAmber/60","text-neonAmber","shadow-neon-glow-orange","hover:border-neonAmber","hover:bg-neonAmber/10"],Ne=()=>["border-neutral-700","text-neutral-600"];function Ge(t,d){if(t&1&&(a(0,"span",4),s(1),o()),t&2){let e=c();r(),S(" ",e.sessionJobs_$().length>9?"9+":e.sessionJobs_$().length," ")}}function He(t,d){t&1&&(E(),a(0,"svg",15),x(1,"path",22),o())}function Je(t,d){t&1&&(E(),a(0,"svg",15),x(1,"rect",23)(2,"rect",24),o())}function Qe(t,d){t&1&&(a(0,"span",18),s(1," \u23F8 paused "),o())}function qe(t,d){if(t&1&&(a(0,"span",20),s(1),z(2,"date"),o()),t&2){let e=c().$implicit;r(),S(" ",B(2,1,e.nextDueAt,"yyyy-MM-dd HH:mm")," ")}}function Ye(t,d){t&1&&(a(0,"span",21),s(1,"\u2014"),o())}function We(t,d){if(t&1&&(a(0,"span",27),s(1),o()),t&2){let e=d.$implicit,n=c(5);p("ngClass",n.getExecutionBadgeClass(e.status))("title",n.buildExecutionBadgeTooltip(e)),r(),S(" ",n.getExecutionBadgeLabel(e.status)," ")}}function Ue(t,d){if(t&1&&(a(0,"div",25)(1,"span",26),s(2,"Trigger-ek:"),o(),F(3,We,2,3,"span",27,ke),o()),t&2){let e=c();r(3),V(e)}}function Xe(t,d){t&1&&_(0,Ue,5,0,"div",25),t&2&&u(d.length>0?0:-1)}function Ze(t,d){if(t&1){let e=k();a(0,"div",9)(1,"div",6)(2,"div",10)(3,"span",11),s(4),o(),a(5,"span",12),s(6),z(7,"schSchedulePresetLabel"),o()(),a(8,"div",13)(9,"button",14),f("click",function(){let i=C(e).$implicit,l=c(2);return v(l.handleTogglePaused(i))}),_(10,He,2,0,":svg:svg",15)(11,Je,3,0,":svg:svg",15),o(),a(12,"button",16),f("click",function(){let i=C(e).$implicit,l=c(2);return v(l.handleTriggerNow(i))}),E(),a(13,"svg",15),x(14,"path",17),o()()()(),_(15,Qe,2,0,"span",18),Q(),a(16,"div",19)(17,"span"),s(18,"K\xF6vetkez\u0151:"),o(),_(19,qe,3,4,"span",20)(20,Ye,2,0,"span",21),o(),_(21,Xe,1,1),o()}if(t&2){let e,n,i,l,m,T,j,g=d.$implicit,D=c(2);r(3),p("title",(e=g.name)!==null&&e!==void 0?e:""),r(),S(" ",((n=g.name)!==null&&n!==void 0?n:"").trim()||"Unnamed schedule"," "),r(2),S(" ",ie(7,28,g.schedule)," "),r(3),M("border-neonCyan",g.paused)("text-neonCyan",g.paused)("hover:bg-neonCyan",g.paused)("hover:bg-opacity-10",g.paused)("border-neutral-500",!g.paused)("text-neutral-400",!g.paused)("hover:border-neutral-300",!g.paused)("hover:text-neutral-200",!g.paused),p("disabled",D.busyJobIds_$().has((i=g._id)!==null&&i!==void 0?i:""))("title",D.busyJobIds_$().has((l=g._id)!==null&&l!==void 0?l:"")?"Folyamatban\u2026":g.paused?"Folytat\xE1s (Resume)":"Sz\xFCneteltet\xE9s (Pause)"),R("aria-label",g.paused?"Resume schedule":"Pause schedule"),r(),u(g.paused?10:11),r(2),p("disabled",D.busyJobIds_$().has((m=g._id)!==null&&m!==void 0?m:""))("title",D.busyJobIds_$().has((T=g._id)!==null&&T!==void 0?T:"")?"Ind\xEDt\xE1s folyamatban\u2026":"Most futtatni (Trigger Now)"),r(3),u(g.paused?15:-1),r(4),u(g.nextDueAt?19:20),r(2),u((j=D.getRecentExecutions(g))?21:-1,j)}}function et(t,d){if(t&1){let e=k();a(0,"div",5)(1,"div",6)(2,"span",7),s(3),o(),a(4,"button",8),f("click",function(){C(e);let i=c();return v(i.handleToggle())}),s(5," \xD7 "),o()(),F(6,Ze,22,30,"div",9,ke),o()}if(t&2){let e=c();r(3),S(" Schedule (",e.sessionJobs_$().length,") "),r(3),V(e.sessionJobs_$())}}var _n=(()=>{class t{sessionId=A.required();scheduledJobs_DS=y(ge);overlayCoordinator_CS=y(G);OVERLAY_ID=P.schedule;isOpen_$=this.overlayCoordinator_CS.isOpen(this.OVERLAY_ID);busyJobIds_$=$(new Set);sessionJobs_$=h(()=>{let e=(this.sessionId()??"").trim();return e?this.scheduledJobs_DS.jobs_$().filter(i=>i.enabled===!1?!1:(i.target?.payload?.sessionId??"").trim()===e):[]});hasSchedule_$=h(()=>this.sessionJobs_$().length>0);ngOnInit(){this.scheduledJobs_DS.jobs_$().length===0&&this.scheduledJobs_DS.loadAll()}handleToggle(){this.overlayCoordinator_CS.toggle(this.OVERLAY_ID)}handleTriggerNow(e){return H(this,null,function*(){let n=(e._id??"").trim();if(n&&!this.busyJobIds_$().has(n)){this.busyJobIds_$.update(i=>{let l=new Set(i);return l.add(n),l});try{yield this.scheduledJobs_DS.triggerNow({jobId:n,reason:"session-overlay-manual"})}finally{this.busyJobIds_$.update(i=>{let l=new Set(i);return l.delete(n),l})}}})}handleTogglePaused(e){return H(this,null,function*(){let n=(e._id??"").trim();if(!n||this.busyJobIds_$().has(n))return;let i=!e.paused;this.busyJobIds_$.update(l=>{let m=new Set(l);return m.add(n),m});try{yield this.scheduledJobs_DS.togglePaused(n,i)}finally{this.busyJobIds_$.update(l=>{let m=new Set(l);return m.delete(n),m})}})}getRecentExecutions(e){let n=e._id??"";return n?this.scheduledJobs_DS.recentExecutions_$().get(n)??[]:[]}getExecutionBadgeClass(e){switch(e){case"triggered":return"bg-emerald-500/20 text-emerald-400";case"completed":return"bg-sky-500/20 text-sky-400";case"skipped":return"bg-neutral-600/30 text-neutral-400";case"failed":return"bg-red-500/20 text-red-400";case"cancelled":return"bg-amber-500/20 text-amber-400";case"dry-run":return"bg-purple-500/20 text-purple-400";default:return"bg-neutral-700/40 text-neutral-500"}}getExecutionBadgeLabel(e){switch(e){case"triggered":return"OK";case"completed":return"Done";case"skipped":return"Skip";case"failed":return"Fail";case"cancelled":return"Cancel";case"dry-run":return"Dry";default:return"?"}}buildExecutionBadgeTooltip(e){let n=[];return e.scheduledAt&&(n.push(new Date(e.scheduledAt).toISOString().slice(0,16).replace("T"," ")),n.push(" \u2014 ")),n.push(e.status??"?"),e.skipReason&&n.push(` (${e.skipReason})`),e.status==="failed"&&e.errorDetails?.message&&n.push(`: ${e.errorDetails.message}`),n.join("")}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=b({type:t,selectors:[["app-s-session-schedule-overlay"]],hostAttrs:[1,"absolute","bottom-4","left-0","z-30","pointer-events-none"],inputs:{sessionId:[1,"sessionId"]},standalone:!0,features:[w],decls:6,vars:12,consts:[[1,"flex","items-end","gap-2","pointer-events-auto"],["type","button","aria-label","Schedule",1,"relative","flex","items-center","justify-center","h-8","w-7","bg-neutral-900","border-2","border-l-0","rounded-r-lg","transition-all","duration-200","ease-out","disabled:cursor-not-allowed",3,"click","disabled","title","ngClass"],["fill","none","stroke","currentColor","viewBox","0 0 24 24","aria-hidden","true",1,"w-4","h-4"],["stroke-linecap","round","stroke-linejoin","round","stroke-width","2","d",`M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5
|
|
2
2
|
a2 2 0 00-2 2v12a2 2 0 002 2z`],["aria-hidden","true",1,"absolute","-top-1","-right-1","min-w-[14px]","h-[14px]","px-[2px]","bg-neonCyan","text-neutral-900","rounded-full","text-[9px]","font-mono","font-bold","leading-[14px]","text-center","shadow-neon-glow-cyan"],[1,"bg-neutral-900","border-2","border-neonAmber/60","rounded-lg","p-3","flex","flex-col","gap-2","min-w-[16rem]","max-w-xs","shadow-neon-glow-orange"],[1,"flex","items-center","justify-between","gap-2"],[1,"text-[10px]","uppercase","tracking-wider","text-neonAmber","font-mono"],["type","button","title","Bez\xE1r\xE1s","aria-label","Schedule panel bez\xE1r\xE1sa",1,"text-neutral-400","hover:text-neonAmber","leading-none","px-1","transition-colors",3,"click"],[1,"flex","flex-col","gap-1","border-t","border-neutral-800","pt-2","first:border-t-0","first:pt-0"],[1,"flex","flex-col","min-w-0"],[1,"text-sm","text-neutral-100","truncate",3,"title"],[1,"text-[10px]","text-neutral-500","font-mono"],[1,"flex","items-center","gap-1.5","shrink-0"],["type","button",1,"flex","items-center","justify-center","w-7","h-7","rounded-full","bg-neutral-900","border-2","transition-all","disabled:opacity-40","disabled:cursor-not-allowed",3,"click","disabled","title"],["fill","currentColor","viewBox","0 0 24 24","aria-hidden","true",1,"w-3.5","h-3.5"],["type","button","aria-label","Trigger now",1,"flex","items-center","justify-center","w-7","h-7","rounded-full","bg-neutral-900","border-2","border-neonAmber/60","text-neonAmber","hover:border-neonAmber","hover:bg-neonAmber/10","hover:shadow-neon-glow-orange","disabled:opacity-40","disabled:cursor-not-allowed","transition-all",3,"click","disabled","title"],["d","M8 5v14l11-7z"],[1,"inline-flex","items-center","gap-1","self-start","text-[9px]","uppercase","tracking-wider","px-1.5","py-0.5","rounded","border","border-neonCyan/50","bg-neonCyan/10","text-neonCyan","font-mono"],["title","K\xF6vetkez\u0151 \xFCtemezett fut\xE1s id\u0151pontja",1,"text-[10px]","text-neutral-500","flex","items-center","gap-1"],[1,"text-emerald-400","font-medium"],[1,"text-neutral-300"],["d","M5 5v14h2V5H5zm5 0v14l11-7z"],["x","6","y","5","width","4","height","14"],["x","14","y","5","width","4","height","14"],[1,"flex","items-center","gap-1","flex-wrap"],[1,"text-[10px]","text-neutral-500"],[1,"inline-flex","items-center","px-1.5","py-0.5","text-[10px]","rounded",3,"ngClass","title"]],template:function(n,i){n&1&&(a(0,"div",0)(1,"button",1),f("click",function(){return i.handleToggle()}),E(),a(2,"svg",2),x(3,"path",3),o(),_(4,Ge,2,1,"span",4),o(),_(5,et,8,1,"div",5),o()),n&2&&(r(),M("-translate-x-2",!i.isOpen_$())("translate-x-2",i.isOpen_$()),p("disabled",!i.hasSchedule_$())("title",i.hasSchedule_$()?i.isOpen_$()?"Schedule panel bez\xE1r\xE1sa":"Schedule megjelen\xEDt\xE9se ("+i.sessionJobs_$().length+" job)":"Nincs schedule ehhez a sessionh\xF6z")("ngClass",i.hasSchedule_$()?O(10,Ke):O(11,Ne)),R("aria-expanded",i.isOpen_$()),r(3),u(i.hasSchedule_$()&&i.sessionJobs_$().length>1?4:-1),r(),u(i.isOpen_$()?5:-1))},dependencies:[K,J,Ce],encapsulation:2})}return t})();function tt(t,d){if(t&1){let e=k();a(0,"button",10),f("click",function(){let i=C(e).$implicit,l=c(2);return v(l.handleAction(i))}),s(1),o()}if(t&2){let e=d.$implicit,n=c(2);p("disabled",n.pendingAction_$()===e),r(),S(" ",n.pendingAction_$()===e?"Sending\u2026":e," ")}}function nt(t,d){if(t&1){let e=k();a(0,"div",4)(1,"div",5)(2,"span",6),s(3," QuickCast "),o(),a(4,"button",7),f("click",function(){C(e);let i=c();return v(i.handleToggle())}),s(5," \xD7 "),o()(),a(6,"div",8),F(7,tt,2,2,"button",9,ee),o()()}if(t&2){let e=c();r(7),V(e.actions())}}var vn=(()=>{class t{actions=A(["Go","Continue","OK","Proceed","implement","Review Very Very Carefully","Ensure Documentations","tervezd meg nagyon alaposan \xE9s fejleszd le","Hogy \xE1llunk most?","itt vagy?"]);actionSelected=q();overlayCoordinator_CS=y(G);OVERLAY_ID=P.quickcast;isOpen_$=this.overlayCoordinator_CS.isOpen(this.OVERLAY_ID);pendingAction_$=$(null);handleToggle(){this.overlayCoordinator_CS.toggle(this.OVERLAY_ID)}handleAction(e){this.pendingAction_$()===null&&(this.pendingAction_$.set(e),this.actionSelected.emit(e),setTimeout(()=>{this.pendingAction_$()===e&&this.pendingAction_$.set(null)},800))}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=b({type:t,selectors:[["app-s-session-quickcast-overlay"]],hostAttrs:[1,"absolute","bottom-16","left-0","z-30","pointer-events-none"],inputs:{actions:[1,"actions"]},outputs:{actionSelected:"actionSelected"},standalone:!0,features:[w],decls:5,vars:7,consts:[[1,"flex","items-end","gap-2","pointer-events-auto"],["type","button","aria-label","QuickCast",1,"flex","items-center","justify-center","h-8","w-7","bg-neutral-900","border-2","border-l-0","border-neonCyan/60","rounded-r-lg","text-neonCyan","shadow-neon-glow-cyan","hover:border-neonCyan","hover:bg-neonCyan/10","transition-all","duration-200","ease-out",3,"click","title"],["fill","none","stroke","currentColor","viewBox","0 0 24 24","aria-hidden","true",1,"w-4","h-4"],["stroke-linecap","round","stroke-linejoin","round","stroke-width","2","d","M13 10V3L4 14h7v7l9-11h-7z"],[1,"bg-neutral-900","border-2","border-neonCyan/60","rounded-md","p-1.5","flex","flex-col","gap-1","min-w-[8rem]","max-w-[13rem]","shadow-neon-glow-cyan"],[1,"flex","items-center","justify-between","gap-1"],[1,"text-[10px]","uppercase","tracking-wider","text-neonCyan","font-mono","leading-none"],["type","button","title","Bez\xE1r\xE1s","aria-label","QuickCast panel bez\xE1r\xE1sa",1,"text-neutral-400","hover:text-neonCyan","leading-none","text-xs","px-1","transition-colors",3,"click"],[1,"flex","flex-col","gap-1"],["type","button",1,"px-1.5","py-0.5","rounded","border-2","border-neonCyan/60","text-neonCyan","text-[11px]","font-medium","hover:border-neonCyan","hover:bg-neonCyan/10","hover:shadow-neon-glow-cyan","disabled:opacity-40","disabled:cursor-not-allowed","transition-all","leading-tight",3,"disabled"],["type","button",1,"px-1.5","py-0.5","rounded","border-2","border-neonCyan/60","text-neonCyan","text-[11px]","font-medium","hover:border-neonCyan","hover:bg-neonCyan/10","hover:shadow-neon-glow-cyan","disabled:opacity-40","disabled:cursor-not-allowed","transition-all","leading-tight",3,"click","disabled"]],template:function(n,i){n&1&&(a(0,"div",0)(1,"button",1),f("click",function(){return i.handleToggle()}),E(),a(2,"svg",2),x(3,"path",3),o()(),_(4,nt,9,0,"div",4),o()),n&2&&(r(),M("-translate-x-2",!i.isOpen_$())("translate-x-2",i.isOpen_$()),p("title",i.isOpen_$()?"QuickCast bez\xE1r\xE1sa":"QuickCast megnyit\xE1sa"),R("aria-expanded",i.isOpen_$()),r(3),u(i.isOpen_$()?4:-1))},encapsulation:2})}return t})();var it=(t,d)=>d.provider+":::"+d.modelName,ot=()=>["border-neonPurple/60","text-neonPurple","shadow-[0_0_10px_rgba(168,85,247,0.4)]","hover:border-neonPurple","hover:bg-neonPurple/10"],at=()=>["border-neutral-700","text-neutral-500","hover:border-neutral-500","hover:bg-neutral-800/50"],rt=()=>["border-neonPurple/60","shadow-[0_0_10px_rgba(168,85,247,0.4)]"],st=()=>["border-neutral-700"],lt=()=>["text-neonPurple"],dt=()=>["text-neutral-400"];function ct(t,d){if(t&1&&(a(0,"div",10)(1,"span",11),s(2,"provider"),o(),a(3,"span",14),s(4),o()()),t&2){let e=c();r(3),p("title",e.providerName),r(),S(" ",e.providerName," ")}}function pt(t,d){if(t&1&&(a(0,"div",10)(1,"span",11),s(2,"model"),o(),a(3,"span",14),s(4),o()()),t&2){let e=c();r(3),p("title",e.model),r(),I(e.model)}}function ut(t,d){if(t&1&&(a(0,"div",10)(1,"span",11),s(2,"workflow"),o(),a(3,"span",14),s(4),o()()),t&2){let e=c();r(3),p("title",e.workflowId),r(),S(" ",e.workflowId," ")}}function mt(t,d){if(t&1){let e=k();a(0,"div",9)(1,"div",10)(2,"span",11),s(3,"status"),o(),a(4,"span",12),s(5),o()(),_(6,ct,5,2,"div",10)(7,pt,5,2,"div",10)(8,ut,5,2,"div",10),o(),a(9,"button",13),f("click",function(){C(e);let i=c(2);return v(i.handleStop())}),s(10),o()}if(t&2){let e=d,n=c(2);r(5),I(e.status),r(),u(e.providerName?6:-1),r(),u(e.model?7:-1),r(),u(e.workflowId?8:-1),r(),p("disabled",n.isBusy_$()),r(),S(" ",n.isBusy_$()?"Stopping\u2026":"Stop"," ")}}function _t(t,d){if(t&1&&(a(0,"option",18),s(1),o()),t&2){let e=d.$implicit;p("value",e.provider+":::"+e.modelName),r(),te(" ",e.provider," / ",e.modelName," ")}}function ft(t,d){if(t&1){let e=k();a(0,"span",15),s(1," Nincs assigned coordinator \u2014 v\xE1lassz modellt \xE9s kattints az Assign-ra. "),o(),a(2,"select",16),f("ngModelChange",function(i){C(e);let l=c(2);return v(l.selectedModelKey_$.set(i))}),a(3,"option",17),s(4,"\u2014 v\xE1lassz modellt \u2014"),o(),F(5,_t,2,3,"option",18,it),o(),a(7,"button",13),f("click",function(){C(e);let i=c(2);return v(i.handleAssign())}),s(8),o()}if(t&2){let e=c(2);r(2),p("ngModel",e.selectedModelKey_$()),r(3),V(e.modelOptions_$()),r(2),p("disabled",!e.selectedModelKey_$()||e.isBusy_$()),r(),S(" ",e.isBusy_$()?"Assigning\u2026":"Assign"," ")}}function xt(t,d){if(t&1){let e=k();a(0,"div",5)(1,"div",6)(2,"span",7),s(3," Coordinator "),o(),a(4,"button",8),f("click",function(){C(e);let i=c();return v(i.handleToggle())}),s(5," \xD7 "),o()(),_(6,mt,11,6)(7,ft,9,3),o()}if(t&2){let e,n=c();p("ngClass",n.isAssigned_$()?O(3,rt):O(4,st)),r(2),p("ngClass",n.isAssigned_$()?O(5,lt):O(6,dt)),r(4),u((e=n.assignedCoordinator_$())?6:7,e)}}var Dn=(()=>{class t{sessionId=A.required();coordinator_DS=y(he);registrySsot_CS=y(xe);overlayCoordinator_CS=y(G);OVERLAY_ID=P.coordinator;isOpen_$=this.overlayCoordinator_CS.isOpen(this.OVERLAY_ID);isBusy_$=$(!1);selectedModelKey_$=$("");modelOptions_$=h(()=>this.registrySsot_CS.enabledLlmModels_$());assignedCoordinator_$=h(()=>{let e=(this.sessionId()??"").trim();return!e||!this.coordinator_DS.coordinatedSessionIds_$().has(e)?null:this.coordinator_DS.globalCoordinatorsList_$().find(l=>{let m=(l.sessionId??"").trim(),T=(l.status??"").trim().toLowerCase();return m===e&&T!=="stopped"&&T!=="completed"})??null});isAssigned_$=h(()=>this.assignedCoordinator_$()!==null);ngOnInit(){this.coordinator_DS.globalCoordinatorsList_$().length===0&&this.coordinator_DS.loadAllCoordinatorsForManagementPage(),this.registrySsot_CS.ensureLoaded("llm")}handleToggle(){this.overlayCoordinator_CS.toggle(this.OVERLAY_ID)}handleAssign(){return H(this,null,function*(){let e=(this.sessionId()??"").trim(),n=this.selectedModelKey_$().trim();if(!e||!n||this.isBusy_$())return;let i=n.split(":::");if(i.length!==2)return;let l=i[0],m=i[1];if(!(!l||!m)){this.isBusy_$.set(!0);try{yield this.coordinator_DS.startCoordinator({sessionId:e,providerName:l,model:m}),this.coordinator_DS.loadAllCoordinatorsForManagementPage()}finally{this.isBusy_$.set(!1)}}})}handleStop(){return H(this,null,function*(){let e=(this.sessionId()??"").trim();if(!(!e||this.isBusy_$())){this.isBusy_$.set(!0);try{yield this.coordinator_DS.stopCoordinator(e),this.coordinator_DS.loadAllCoordinatorsForManagementPage()}finally{this.isBusy_$.set(!1)}}})}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=b({type:t,selectors:[["app-s-session-coordinator-overlay"]],hostAttrs:[1,"absolute","bottom-28","left-0","z-30","pointer-events-none"],inputs:{sessionId:[1,"sessionId"]},standalone:!0,features:[w],decls:6,vars:10,consts:[[1,"flex","items-end","gap-2","pointer-events-auto"],["type","button","aria-label","Coordinator",1,"relative","flex","items-center","justify-center","h-8","w-7","bg-neutral-900","border-2","border-l-0","rounded-r-lg","transition-all","duration-200","ease-out",3,"click","title","ngClass"],["viewBox","0 0 24 24","fill","none","stroke","currentColor","stroke-width","2","stroke-linecap","round","stroke-linejoin","round","aria-hidden","true",1,"w-4","h-4"],["cx","12","cy","12","r","10"],["points","16.24 7.76 14.12 14.12 7.76 16.24 9.88 9.88 16.24 7.76"],[1,"bg-neutral-900","border-2","rounded-lg","p-3","flex","flex-col","gap-2","min-w-[16rem]","max-w-xs",3,"ngClass"],[1,"flex","items-center","justify-between","gap-2"],[1,"text-[10px]","uppercase","tracking-wider","font-mono",3,"ngClass"],["type","button","title","Bez\xE1r\xE1s","aria-label","Coordinator panel bez\xE1r\xE1sa",1,"text-neutral-400","hover:text-neonPurple","leading-none","px-1","transition-colors",3,"click"],[1,"flex","flex-col","gap-1","text-xs"],[1,"flex","justify-between","gap-2"],[1,"text-neutral-500","font-mono","text-[10px]"],[1,"text-neutral-100"],["type","button",1,"self-end","px-2","py-1","rounded","border-2","border-neonPurple/60","text-neonPurple","text-xs","font-medium","hover:bg-neonPurple/10","hover:shadow-[0_0_10px_rgba(168,85,247,0.4)]","disabled:opacity-40","disabled:cursor-not-allowed","transition-all",3,"click","disabled"],[1,"text-neutral-100","truncate",3,"title"],[1,"text-[11px]","text-neutral-400"],[1,"bg-neutral-900","border","border-neutral-700","rounded","px-2","py-1","text-xs","text-neutral-100","focus:outline-none","focus:border-neonPurple/60",3,"ngModelChange","ngModel"],["value","","disabled",""],[3,"value"]],template:function(n,i){if(n&1&&(a(0,"div",0)(1,"button",1),f("click",function(){return i.handleToggle()}),E(),a(2,"svg",2),x(3,"circle",3)(4,"polygon",4),o()(),_(5,xt,8,7,"div",5),o()),n&2){let l;r(),M("-translate-x-2",!i.isOpen_$())("translate-x-2",i.isOpen_$()),p("title",i.isAssigned_$()?i.isOpen_$()?"Coordinator panel bez\xE1r\xE1sa":"Coordinator: "+((l=(l=i.assignedCoordinator_$())==null?null:l.status)!==null&&l!==void 0?l:""):i.isOpen_$()?"Coordinator panel bez\xE1r\xE1sa":"Nincs coordinator \u2014 assign-ol\xE1shoz kattints")("ngClass",i.isAssigned_$()?O(8,ot):O(9,at)),R("aria-expanded",i.isOpen_$()),r(4),u(i.isOpen_$()?5:-1)}},dependencies:[K,de,se,le,re,oe,ae],encapsulation:2})}return t})();var St=()=>["border-neonCyan/60","text-neonCyan","shadow-neon-glow-cyan","hover:border-neonCyan","hover:bg-neonCyan/10"],gt=()=>["border-neutral-700","text-neutral-500","hover:border-neutral-500","hover:text-neutral-300"];function ht(t,d){t&1&&(E(),a(0,"svg",1),x(1,"polygon",2)(2,"path",3)(3,"path",4),o())}function Ct(t,d){t&1&&(E(),a(0,"svg",1),x(1,"polygon",2)(2,"line",5)(3,"line",6),o())}var Ie=(()=>{class t{sessionId=A.required();isEnabled_$=$(!1);ngOnInit(){this.refreshEnabledFromStorage()}refreshEnabledFromStorage(){this.isEnabled_$.set(U.isEnabled(this.sessionId()))}handleToggle(){U.toggle(this.sessionId()),this.refreshEnabledFromStorage()}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=b({type:t,selectors:[["app-s-auto-read-tts-toggle"]],inputs:{sessionId:[1,"sessionId"]},standalone:!0,features:[w],decls:3,vars:6,consts:[["type","button",1,"relative","flex","items-center","justify-center","h-8","w-8","bg-neutral-900","border-2","rounded-md","transition-all","duration-200","ease-out",3,"click","title","ngClass"],["viewBox","0 0 24 24","fill","none","stroke","currentColor","stroke-width","2","stroke-linecap","round","stroke-linejoin","round","aria-hidden","true",1,"w-4","h-4"],["points","11 5 6 9 2 9 2 15 6 15 11 19 11 5"],["d","M15.54 8.46a5 5 0 0 1 0 7.07"],["d","M19.07 4.93a10 10 0 0 1 0 14.14"],["x1","23","y1","9","x2","17","y2","15"],["x1","17","y1","9","x2","23","y2","15"]],template:function(n,i){n&1&&(a(0,"button",0),f("click",function(){return i.handleToggle()}),_(1,ht,4,0,":svg:svg",1)(2,Ct,4,0,":svg:svg",1),o()),n&2&&(p("title",i.isEnabled_$()?"Auto-read assistant: ON (\xFAj asszisztens \xFCzenetek automatikusan felolvas\xE1sra ker\xFClnek). Klikk: kikapcsol\xE1s.":"Auto-read assistant: OFF. Klikk: bekapcsol\xE1s (csak az ezut\xE1n \xE9rkez\u0151 \xFCzenetek olvas\xF3dnak fel).")("ngClass",i.isEnabled_$()?O(4,St):O(5,gt)),R("aria-pressed",i.isEnabled_$()),r(),u(i.isEnabled_$()?1:2))},dependencies:[K],encapsulation:2})}return t})();function vt(t,d){if(t&1){let e=k();a(0,"button",26),f("click",function(){C(e);let i=c(2);return v(i.handleRestartRunnerClick())}),a(1,"span",13),E(),a(2,"svg",14),x(3,"path",27)(4,"path",28)(5,"path",29)(6,"path",30),o(),s(7," Restart Terminal Runner "),o()()}}function yt(t,d){if(t&1){let e=k();a(0,"div",5)(1,"div",6)(2,"span",7),s(3," Quick Settings "),o(),a(4,"button",8),f("click",function(){C(e);let i=c();return v(i.handleToggle())}),s(5," \xD7 "),o()(),a(6,"p",9),s(7," Plan-state v1 \u2014 minden funkci\xF3 "),a(8,"span",10),s(9,"disabled"),o(),s(10,"; bek\xF6t\xE9s Plans Feature Set keret\xE9ben k\xF6vetkezik (`2026-05-06-session-quick-settings-feature-set-plan.md`). "),o(),_(11,vt,8,0,"button",11),a(12,"div",12)(13,"span",13),E(),a(14,"svg",14),x(15,"path",15)(16,"path",16)(17,"path",17),o(),s(18," Auto-Read Assistant TTS "),o(),Q(),x(19,"app-s-auto-read-tts-toggle",18),o(),a(20,"button",19)(21,"span",13),E(),a(22,"svg",20),x(23,"rect",21)(24,"path",22)(25,"path",23)(26,"path",24),o(),s(27," Always-On Intelligent Voice Input "),o(),Q(),a(28,"span",25),s(29,"soon"),o()()()}if(t&2){let e=c();r(11),u(e.showRestartRunner()?11:-1),r(8),p("sessionId",e.sessionId())}}var Hn=(()=>{class t{sessionId=A.required();showRestartRunner=A(!1);restartRunnerClicked=q();overlayCoordinator_CS=y(G);OVERLAY_ID=P.quickSettings;isOpen_$=this.overlayCoordinator_CS.isOpen(this.OVERLAY_ID);handleToggle(){this.overlayCoordinator_CS.toggle(this.OVERLAY_ID)}handleRestartRunnerClick(){this.restartRunnerClicked.emit(),this.overlayCoordinator_CS.setOpen(null)}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=b({type:t,selectors:[["app-s-session-quick-settings-overlay"]],hostAttrs:[1,"absolute","bottom-40","left-0","z-30","pointer-events-none"],inputs:{sessionId:[1,"sessionId"],showRestartRunner:[1,"showRestartRunner"]},outputs:{restartRunnerClicked:"restartRunnerClicked"},standalone:!0,features:[w],decls:6,vars:7,consts:[[1,"flex","items-end","gap-2","pointer-events-auto"],["type","button","aria-label","Session Quick Settings",1,"relative","flex","items-center","justify-center","h-8","w-7","bg-neutral-900","border-2","border-l-0","border-neonGreen/60","rounded-r-lg","text-neonGreen","shadow-[0_0_10px_rgba(0,255,136,0.35)]","hover:border-neonGreen","hover:bg-neonGreen/10","transition-all","duration-200","ease-out",3,"click","title"],["viewBox","0 0 24 24","fill","none","stroke","currentColor","stroke-width","2","stroke-linecap","round","stroke-linejoin","round","aria-hidden","true",1,"w-4","h-4"],["cx","12","cy","12","r","3"],["d",`M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0
|
|
3
3
|
l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2
|
|
4
4
|
2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06
|
|
@@ -15,4 +15,4 @@ auto-send egyetlen \xFCzenetk\xE9nt, opcion\xE1lis chime hangjelz\xE9s a trigger
|
|
|
15
15
|
Spec: __specifications/poc/voice-input-continuous-and-mobile.md (REQ-VIM-CONT-002,
|
|
16
16
|
REQ-VIM-SEND-001). Hi\xE1nyz\xF3 r\xE9szek: per-segment \u2192 cycle-akkumul\xE1ci\xF3, silence-detect
|
|
17
17
|
\u2192 auto-send, cseng\u0151 hang. Nagyobb implement\xE1ci\xF3s csomag \u2014 Plan dokumentum r\xE9szletez.`,1,"flex","items-center","justify-between","gap-2","px-2","py-1.5","rounded","border-2","border-neutral-700","text-neutral-500","text-xs","bg-neutral-900/50","cursor-not-allowed","transition-colors"],["viewBox","0 0 24 24","fill","none","stroke","currentColor","stroke-width","2","stroke-linecap","round","stroke-linejoin","round","aria-hidden","true",1,"w-4","h-4","shrink-0"],["x","9","y","3","width","6","height","12","rx","3"],["d","M19 11a7 7 0 0 1-14 0"],["d","M12 18v3"],["d","M8 21h8"],[1,"text-[9px]","uppercase","tracking-wider","text-neutral-600","font-mono"],["type","button","title","Aktu\xE1lis CC session terminal runner kill + respawn. \xDAj termin\xE1l ablak ny\xEDlik a friss npm-build-tel; runner version-mismatch vagy no-ACK-fire hib\xE1k gyors fixje a session-b\u0151l, dashboard-ra navig\xE1l\xE1s n\xE9lk\xFCl.",1,"flex","items-center","justify-between","gap-2","px-2","py-1.5","rounded","border-2","border-neonGreen/40","text-neutral-300","text-xs","bg-neutral-900/50","hover:bg-neonGreen/10","hover:border-neonGreen","cursor-pointer","transition-colors",3,"click"],["d","M3 12a9 9 0 0 1 15.5-6.3L21 8"],["d","M21 3v5h-5"],["d","M21 12a9 9 0 0 1-15.5 6.3L3 16"],["d","M3 21v-5h5"]],template:function(n,i){n&1&&(a(0,"div",0)(1,"button",1),f("click",function(){return i.handleToggle()}),E(),a(2,"svg",2),x(3,"circle",3)(4,"path",4),o()(),_(5,yt,30,2,"div",5),o()),n&2&&(r(),M("-translate-x-2",!i.isOpen_$())("translate-x-2",i.isOpen_$()),p("title",i.isOpen_$()?"Session Quick Settings panel bez\xE1r\xE1sa":"Session Quick Settings \u2014 hamarosan: Restart Runner, Auto-Read TTS, Intelligent Voice Input. Plan dokumentum k\xE9szen, implement\xE1ci\xF3 folyamatban."),R("aria-expanded",i.isOpen_$()),r(4),u(i.isOpen_$()?5:-1))},dependencies:[Ie],encapsulation:2})}return t})();export{W as a,en as b,_n as c,vn as d,Dn as e,Hn as f};
|
|
18
|
-
//# sourceMappingURL=chunk-
|
|
18
|
+
//# sourceMappingURL=chunk-3SDY7S56.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{a as x}from"./chunk-THHGLNFI.js";import{a as T}from"./chunk-UFBTR2BG.js";import{a as P}from"./chunk-66F6YPRF.js";import{e as D}from"./chunk-HGDZCCLA.js";import{G as C,I as y,p as O}from"./chunk-KNX6PXMA.js";import{C as f,a as m,aa as o,b as _,h as N,jb as k,k as a,l as b,p as h,vb as g,xb as w,y as E}from"./chunk-TBMJSIBB.js";var A=class{static computeSocketUrlFromStatus(p,e){return e}};var L=class{static toDisplayString(p){if(p==null)return"";if(typeof p=="string")return p;if(typeof p=="object"&&p!==null){let t=p;if(typeof t.message=="string"&&t.message.trim().length>0)return t.message.trim();if(typeof t.error=="string"&&t.error.trim().length>0)return t.error.trim();if(typeof t.detail=="string"&&t.detail.trim().length>0)return t.detail.trim()}let e=String(p);return e==="[object Object]"?"\u2014":e}};var d=N(O());var F=(()=>{class r{baseUrl=`${y.api.baseUrl}/session`;http=f(w);getMessages(e){return h(this.http.get(`${this.baseUrl}/${e.sessionId}/messages`,{params:{viewMode:e.viewMode}}))}getMessagesChunked(e){let t={viewMode:e.viewMode};return e.beforeIndex!=null&&(t.beforeIndex=String(e.beforeIndex)),e.limit!=null&&(t.limit=String(e.limit)),e.latest&&(t.latest="1"),e.archiveScope&&(t.archiveScope=e.archiveScope),h(this.http.get(`${this.baseUrl}/${e.sessionId}/messages/chunk`,{params:t}))}sendMessage(e){return h(this.http.post(`${this.baseUrl}/${e.sessionId}/messages`,{content:e.content,imageAttachments:e.imageAttachments}))}static \u0275fac=function(t){return new(t||r)};static \u0275prov=E({token:r,factory:r.\u0275fac,providedIn:"root"})}return r})();var R=(()=>{class r{baseUrl=`${y.api.baseUrl}/session`;http=f(w);peiContext_DS=f(P);currentCcapId(){return this.peiContext_DS.activeCcapId_$()}withCcapId(e){let t=this.currentCcapId();return t?e.set("ccapId",t):e}listSessions(){let e=this.withCcapId(new g);return h(this.http.get(this.baseUrl,{params:e}))}listArchivedSessions(){let e=this.withCcapId(new g);return e=e.set("archived","true"),h(this.http.get(this.baseUrl,{params:e}))}createSession(e){let t={},s=e?.name!==void 0?e.name.trim():void 0;s!==void 0&&s.length>0&&(t.name=s);let n=this.withCcapId(new g);return h(this.http.post(this.baseUrl,t,{params:n}))}getSession(e){let t=this.withCcapId(new g);return h(this.http.get(`${this.baseUrl}/${e}`,{params:t}))}updateSession(e){let t=this.withCcapId(new g);return h(this.http.patch(`${this.baseUrl}/${e.sessionId}`,e.updates,{params:t}))}getSessionInfo(e){let t=this.withCcapId(new g);return h(this.http.get(`${this.baseUrl}/${e}/session-info`,{params:t}))}copySession(e){let t={};e.name&&(t.name=e.name),e.forkUntilMessageKey&&(t.forkUntilMessageKey=e.forkUntilMessageKey);let s=this.withCcapId(new g);return h(this.http.post(`${this.baseUrl}/${e.sessionId}/copy`,t,{params:s}))}stopExecution(e){let t=this.withCcapId(new g);return h(this.http.post(`${this.baseUrl}/${e}/stop-execution`,{},{params:t}))}getLlmDebugTrace(e){let t=this.withCcapId(new g);return t=t.set("runId",e.runId),h(this.http.get(`${this.baseUrl}/${e.sessionId}/llm-debug-trace`,{params:t}))}static \u0275fac=function(t){return new(t||r)};static \u0275prov=E({token:r,factory:r.\u0275fac,providedIn:"root"})}return r})();var B="answer",j="notify-user",V="agent-events",z="context:updated",H="monitoring:event",G="user-interaction:request",q="user-interaction:resolved",W="ccap_notification",Q="notification-sent",X="waiting-for-user",Ce=(()=>{class r{sessionDetailBySessionId=new Map;sessionInfoBySessionId=new Map;activeSessionId_$=o("");requestSidebarCloseOnMobileBump_$=o(0);sessions_$=o([]);sessionsLoadError_$=o(null);sessionsLoading_$=o(!1);archivedSessions_$=o([]);archivedSessionsLoading_$=o(!1);messages_$=o([]);messagesLoading_$=o(!1);messagesLoadError_$=o(null);chunkState_$=o({total:0,hasMore:!1,nextBeforeIndex:null,isLoadingOlder:!1,archivedTotal:0});agentEvents_$=o({});activeRunExecutionMode_$=o("");contextUpdated_$=o(null);monitoringEvent_$=o(null);monitoringEvent_S=new b;pendingInteraction_$=o(null);pendingNotification_$=o(null);sessionDetailMap_$=o(new Map);sessionDetailLoading_$=o(!1);sessionInfoMap_$=o(new Map);sessionInfoLoading_$=o(!1);sessionInfoLoadError_$=o(null);llmDebugTraceEntries_$=o([]);llmDebugTraceLoading_$=o(!1);llmDebugTraceLoadError_$=o(null);eventSubscription=null;connectedEffectRef=null;session_AS=f(R);conversation_AS=f(F);serverStatus_AS=f(x);socket_CS=f(D);get connected_$(){return this.socket_CS.connected_$}get socketStatus_$(){return this.socket_CS.status_$}get lastSocketError_$(){return this.socket_CS.lastError_$}get connectAttemptCount_$(){return this.socket_CS.connectAttemptCount_$}diagnoseConnection(){return this.socket_CS.diagnoseConnection()}constructor(){this.eventSubscription=this.socket_CS.event$.subscribe(e=>{this.handleSocketEvent(e)}),this.connectedEffectRef=k(()=>{this.socket_CS.connected_$()&&this.getActiveSessionId()&&this.socket_CS.emit("session:attach",{sessionId:this.getActiveSessionId()})})}handleSocketEvent(e){let t=e.payload??{},s=this.getActiveSessionId(),n=typeof t.channelId=="string"?t.channelId:void 0,S=typeof t.sessionId=="string"?t.sessionId:void 0,v=!n&&!S||n===s||S===s;if(e.event===B&&v){let i=typeof t.content=="string"?t.content:"",c=typeof t.timestamp=="string"?t.timestamp:new Date().toISOString(),l=typeof t.runId=="string"?t.runId:void 0,I={role:"assistant",content:i,timestamp:new Date(c)},u=l?_(m({},I),{runId:l}):I,$=this.ensureClientListKey(u);this.messages_$.set([...this.messages_$(),$]);return}if(e.event===j&&v){let i=typeof t.content=="string"?t.content:"";d.DyFM_Log.info(`CCAP_SessionDS | notify-user received: ${i.substring(0,120)}\u2026`);let c=this.ensureClientListKey({role:"system",content:i,timestamp:new Date});this.messages_$.set([...this.messages_$(),c]);return}if(e.event===V){let i=typeof t.eventData=="object"&&t.eventData!==null?t.eventData:{};this.agentEvents_$.set(i),this.applyAgentEventRunExecutionModeLatch(i);let c=typeof i.toolId=="string"?i.toolId:"",l=typeof i.phase=="string"?i.phase:"";c===W&&(l===Q||l===X)?this.pendingNotification_$.set({phase:l,notificationTitle:typeof i.notificationTitle=="string"?i.notificationTitle:"",notificationType:typeof i.notificationType=="string"?i.notificationType:"",notificationPriority:typeof i.notificationPriority=="string"?i.notificationPriority:"info"}):this.pendingNotification_$()&&this.pendingNotification_$.set(null);let I=i.toolError,u=n??i.channelId,$=!u||u===s,M=L.toDisplayString(I).trim();if(M.length>0&&$){d.DyFM_Log.info(`CCAP_SessionDS | toolError from agent-events, pushing to chat: ${M.substring(0,80)}\u2026`);let K=this.ensureClientListKey({role:"system",content:M,timestamp:new Date});this.messages_$.set([...this.messages_$(),K])}return}if(e.event===z){let i=typeof t.sessionId=="string"?t.sessionId:"",c=typeof t.contextState=="object"&&t.contextState!==null?t.contextState:{};this.contextUpdated_$.set({sessionId:i,contextState:c});return}if(e.event===H){let i=typeof t.sessionId=="string"?t.sessionId:"",c=typeof t.event=="object"&&t.event!==null?t.event:{},l={sessionId:i,event:c};this.monitoringEvent_$.set(l),this.monitoringEvent_S.next(l);return}if(e.event===G&&v){this.pendingInteraction_$.set(t);return}if(e.event===q&&v){let i=typeof t.interactionId=="string"?t.interactionId:void 0;if(!i)return;this.pendingInteraction_$()?.interactionId===i&&this.pendingInteraction_$.set(null);return}}loadSessions(){return a(this,null,function*(){this.sessionsLoading_$.set(!0);try{this.sessionsLoadError_$.set(null);let e=yield this.session_AS.listSessions();return this.sessions_$.set(e.sessions),e.sessions}catch(e){return d.DyFM_Error.logSimple("CCAP_SessionDS | Failed to load sessions",e),this.sessionsLoadError_$.set(e),[]}finally{this.sessionsLoading_$.set(!1)}})}createSession(e){return a(this,null,function*(){let t=yield this.session_AS.createSession(e);return yield this.loadSessions(),t.session})}copySession(e){return a(this,null,function*(){let t=yield this.session_AS.copySession(e);return yield this.loadSessions(),t.session})}forkSession(e){return a(this,null,function*(){let t=yield this.session_AS.copySession({sessionId:e.sessionId,name:e.name,forkUntilMessageKey:e.forkUntilMessageKey});return yield this.loadSessions(),t.session})}loadArchivedSessions(){return a(this,null,function*(){this.archivedSessionsLoading_$.set(!0);try{let e=yield this.session_AS.listArchivedSessions();return this.archivedSessions_$.set(e.sessions),e.sessions}catch(e){return d.DyFM_Error.logSimple("CCAP_SessionDS | Failed to load archived sessions",e),this.archivedSessions_$.set([]),[]}finally{this.archivedSessionsLoading_$.set(!1)}})}setActiveSession(e){this.activeSessionId_$()!==e&&(this.activeSessionId_$.set(e),this.clearMessages(),this.pendingInteraction_$.set(null),this.activeRunExecutionMode_$.set("")),this.socket_CS.emit("session:attach",{sessionId:e})}getActiveSessionId(){return this.activeSessionId_$()}reconnectSocket(){return a(this,null,function*(){try{let e=yield this.serverStatus_AS.getStatus(),t=typeof window<"u"?window.location.origin:"",s=A.computeSocketUrlFromStatus({httpPort:e.httpPort,socketPort:e.socketPort},t),n=y.socketUrl??t;if(s!==n&&typeof window<"u"){y.socketUrl=s,d.DyFM_Log.info("CCAP_SessionDS | socketUrl changed on reconnect, reloading",s),window.location.reload();return}}catch{}this.socket_CS.reconnect()})}stopExecution(e){return a(this,null,function*(){try{return(yield this.session_AS.stopExecution(e)).success}catch(t){return d.DyFM_Error.logSimple("CCAP_Session_DS | stopExecution failed",t),!1}})}sendMessageViaSocket(e,t){return a(this,null,function*(){let s=e.trim();if(s==="/new")return{newSession:yield this.createSession(),sent:!0};let n=this.activeSessionId_$();if(!n)return{sent:!1};let S=(t?.length??0)>0;if(!s.length&&!S)return{sent:!1};let v={role:"user",content:e,timestamp:new Date},i=this.ensureClientListKey(v);this.messages_$.set([...this.messages_$(),i]);try{let l=(yield this.conversation_AS.sendMessage({sessionId:n,content:e,imageAttachments:t})).message,I=this.messages_$().map(u=>{if(u.clientListKey!==i.clientListKey)return u;let $=m({},u);return l.messageKey&&($.messageKey=l.messageKey),l.hasTtsAudio!==void 0&&($.hasTtsAudio=l.hasTtsAudio),$});return this.messages_$.set(I),{sent:!0}}catch(c){d.DyFM_Error.logSimple("CCAP_SessionDS | Failed to send message via REST",c);let l=this.messages_$().filter(u=>u.clientListKey!==i.clientListKey);return this.messages_$.set(l),{sent:!1,error:c instanceof Error?c.message:"\xDCzenet k\xFCld\xE9se sikertelen."}}})}sendMessageToSession(e){return a(this,null,function*(){yield this.conversation_AS.sendMessage({sessionId:e.sessionId,content:e.content})})}sendInteractionResponse(e){this.socket_CS.emit("user-interaction:response",e),this.pendingInteraction_$.set(null)}clearMessages(){this.messages_$.set([]),this.chunkState_$.set({total:0,hasMore:!1,nextBeforeIndex:null,isLoadingOlder:!1,archivedTotal:0})}setMessages(e){let s=(e??[]).map(n=>this.ensureClientListKey(n));this.messages_$.set(s)}ensureClientListKey(e){if(e.clientListKey?.trim()?.length)return e;let s=e.messageKey?.trim();return s?.length?_(m({},e),{clientListKey:s}):_(m({},e),{clientListKey:globalThis.crypto.randomUUID()})}setMessageTtsCached(e){let s=this.messages_$().map(n=>n.messageKey===e?_(m({},n),{hasTtsAudio:!0}):n);this.messages_$.set(s)}loadMessagesForView(e){return a(this,null,function*(){this.messagesLoading_$.set(!0),this.messagesLoadError_$.set(null);try{let s=(yield this.conversation_AS.getMessages({sessionId:e,viewMode:"conversationFull"})).messages??[];return e===this.activeSessionId_$()&&this.setMessages(s),s}catch(t){return d.DyFM_Error.logSimple("CCAP_SessionDS | Failed to load messages for view",t),this.messagesLoadError_$.set(t),[]}finally{this.messagesLoading_$.set(!1)}})}loadInitialChunk(e){return a(this,null,function*(){this.messagesLoading_$.set(!0),this.messagesLoadError_$.set(null);try{let t=yield this.conversation_AS.getMessagesChunked({sessionId:e.sessionId,viewMode:e.viewMode??"conversationFull",latest:!0,limit:e.limit??50,archiveScope:e.archiveScope});return e.sessionId===this.activeSessionId_$()&&(this.setMessages(t.messages??[]),this.chunkState_$.set({total:t.total,hasMore:t.hasMore,nextBeforeIndex:t.nextBeforeIndex,isLoadingOlder:!1,archivedTotal:t.archivedTotal})),t}catch(t){return d.DyFM_Error.logSimple("CCAP_SessionDS | Failed to load initial chunk",t),this.messagesLoadError_$.set(t),null}finally{this.messagesLoading_$.set(!1)}})}loadOlderChunk(e){return a(this,null,function*(){let t=this.chunkState_$();if(!t.hasMore||t.nextBeforeIndex==null||t.isLoadingOlder)return null;this.chunkState_$.set(_(m({},t),{isLoadingOlder:!0}));try{let s=yield this.conversation_AS.getMessagesChunked({sessionId:e.sessionId,viewMode:e.viewMode??"conversationFull",beforeIndex:t.nextBeforeIndex,limit:e.limit??50,archiveScope:e.archiveScope});if(e.sessionId===this.activeSessionId_$()){let n=(s.messages??[]).map(S=>this.ensureClientListKey(S));this.messages_$.set([...n,...this.messages_$()]),this.chunkState_$.set({total:s.total,hasMore:s.hasMore,nextBeforeIndex:s.nextBeforeIndex,isLoadingOlder:!1,archivedTotal:s.archivedTotal})}else this.chunkState_$.set(_(m({},t),{isLoadingOlder:!1}));return s}catch(s){return d.DyFM_Error.logSimple("CCAP_SessionDS | Failed to load older chunk",s),this.messagesLoadError_$.set(s),this.chunkState_$.set(_(m({},t),{isLoadingOlder:!1})),null}})}loadSessionDetail(e){return a(this,null,function*(){if(!e)return null;this.sessionDetailLoading_$.set(!0);try{let t=yield this.session_AS.getSession(e),s={session:t.session,lastRun:t.lastRun??null};return this.sessionDetailBySessionId.set(e,s),this.sessionDetailMap_$.set(new Map(this.sessionDetailBySessionId)),s}catch(t){return d.DyFM_Error.logSimple("CCAP_SessionDS | Failed to load session detail",t),null}finally{this.sessionDetailLoading_$.set(!1)}})}getCachedSessionDetail(e){return this.sessionDetailBySessionId.get(e)??null}loadSessionInfo(e){return a(this,null,function*(){if(!e)return null;this.sessionInfoLoading_$.set(!0),this.sessionInfoLoadError_$.set(null);try{let t=yield this.session_AS.getSessionInfo(e);return this.sessionInfoBySessionId.set(e,t),this.sessionInfoMap_$.set(new Map(this.sessionInfoBySessionId)),t}catch(t){return d.DyFM_Error.logSimple("CCAP_SessionDS | Failed to load session info",t),this.sessionInfoLoadError_$.set(t),null}finally{this.sessionInfoLoading_$.set(!1)}})}getCachedSessionInfo(e){return this.sessionInfoBySessionId.get(e)??null}fetchLlmDebugTraceEntriesForRun(e){return a(this,null,function*(){let t=e.sessionId?.trim()??"",s=e.runId?.trim()??"";if(!t||!s)return[];try{return(yield this.session_AS.getLlmDebugTrace({sessionId:t,runId:s})).entries??[]}catch{return[]}})}loadLlmDebugTrace(e){return a(this,null,function*(){let t=e.sessionId?.trim()??"",s=e.runId?.trim()??"";if(!t||!s){this.llmDebugTraceEntries_$.set([]);return}this.llmDebugTraceLoading_$.set(!0),this.llmDebugTraceLoadError_$.set(null);try{let n=yield this.session_AS.getLlmDebugTrace({sessionId:t,runId:s});this.llmDebugTraceEntries_$.set(n.entries)}catch(n){d.DyFM_Error.logSimple("CCAP_SessionDS | Failed to load LLM debug trace",n),this.llmDebugTraceLoadError_$.set(n),this.llmDebugTraceEntries_$.set([])}finally{this.llmDebugTraceLoading_$.set(!1)}})}updateSession(e){return a(this,null,function*(){try{let t=yield this.session_AS.updateSession(e),s=e.updates.archived;return s===!0||s===!1?(yield this.loadSessions(),yield this.loadArchivedSessions()):yield this.loadSessions(),t.session}catch(t){return d.DyFM_Error.logSimple("CCAP_SessionDS | Failed to update session",t),null}})}applyAgentEventRunExecutionModeLatch(e){let t=e.phase,s=typeof t=="string"?t.trim():"";if(s===T.analyzeResult){let n=e.runExecutionMode;if(typeof n=="string"&&n.trim()!==""){let S=r.normalizeRunExecutionModeSocketValue(n);S!==void 0&&this.activeRunExecutionMode_$.set(S)}return}(s===T.runFlowComplete||s===T.runInitialization)&&this.activeRunExecutionMode_$.set("")}static normalizeRunExecutionModeSocketValue(e){let t=e.trim(),s=[C.instant,C.agenticAny,C.ask,C.plan];for(let n of s)if(t===n)return n}ngOnDestroy(){this.monitoringEvent_S.complete(),this.eventSubscription&&(this.eventSubscription.unsubscribe(),this.eventSubscription=null),this.connectedEffectRef&&(this.connectedEffectRef.destroy(),this.connectedEffectRef=null)}static \u0275fac=function(t){return new(t||r)};static \u0275prov=E({token:r,factory:r.\u0275fac,providedIn:"root"})}return r})();export{A as a,L as b,Ce as c};
|
|
2
|
+
//# sourceMappingURL=chunk-4P4OUN3W.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["src/app/_collections/utils/socket-url.util.ts", "src/app/_collections/display/display-string.util.ts", "src/app/_modules/session/_services/data-services/session.data-service.ts", "src/app/_modules/session/_services/api-services/ses-conversation.api-service.ts", "src/app/_modules/session/_services/api-services/session.api-service.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * Socket URL számítás a GET /server/status válaszból (httpPort, socketPort).\n * Közös logika: main.ts bootstrap és reconnect flow (status refresh).\n */\n\nimport { CCAP_StatusPorts_Interface } from './socket-url.util.interface';\n\n/**\n * Socket URL util – statikus metódusokkal.\n */\nexport class SocketUrl_Util {\n /**\n * Status válaszból kiszámítja a socket URL-t.\n * Mindig same-origin (origin): dev-ben a proxy-local továbbítja 39052-re,\n * server-served HTTP (39050) esetén a socket ugyanazon a HTTP szerveren van,\n * HTTPS UI (39051) esetén a szerver /socket.io-t a belső HTTP port Engine.IO-jára proxyzza (wss).\n */\n static computeSocketUrlFromStatus(\n _data: CCAP_StatusPorts_Interface,\n origin: string,\n ): string {\n return origin;\n }\n}\n", "/**\n * Ismeretlen érték megjelenítési szöveggé alakítása.\n * Object esetén nem \"[object Object]\" hanem .message / .error / .detail vagy fallback.\n */\nexport class DisplayString_Util {\n /**\n * Ismeretlen érték megjelenítési szöveggé alakítása.\n */\n static toDisplayString(value: unknown): string {\n if (value === undefined || value === null) {\n return '';\n }\n if (typeof value === 'string') {\n return value;\n }\n if (typeof value === 'object' && value !== null) {\n const o: Record<string, unknown> = value as Record<string, unknown>;\n if (typeof o.message === 'string' && o.message.trim().length > 0) {\n return o.message.trim();\n }\n if (typeof o.error === 'string' && o.error.trim().length > 0) {\n return o.error.trim();\n }\n if (typeof o.detail === 'string' && o.detail.trim().length > 0) {\n return o.detail.trim();\n }\n }\n const s: string = String(value);\n if (s === '[object Object]') {\n return '—';\n }\n return s;\n }\n}\n", "import { effect, EffectRef, inject, Injectable, OnDestroy, signal } from '@angular/core';\n\nimport { Subject, Subscription } from 'rxjs';\n\nimport { DyFM_Error, DyFM_Log } from '@futdevpro/fsm-dynamo';\n\nimport { AC_RunExecutionMode_Type } from '@server-enums';\nimport { SocketUrl_Util } from '../../../../_collections/utils/socket-url.util';\nimport { DisplayString_Util } from '../../../../_collections/display/display-string.util';\nimport { AC_RunFlowPhase_Type } from '../../../../_enums/run-session/ccap-run-flow-phase.enum';\nimport { CCAP_SocketStatus_Type } from '../../../../_enums/ccap-socket-status.enum';\nimport { AC_LastRunSummary_Response } from '../../../../_models/interfaces/session/ccap-last-run-summary.interface';\nimport {\n CCAP_SessionListItem_Response,\n} from '../../../../_models/interfaces/session/ccap-session-list-item.interface';\nimport {\n AC_LlmDebugTraceEntry_Response,\n AC_SessionInfo_Response,\n UIn_UserInteractionRequest_Interface,\n UIn_UserInteractionResponse_Interface,\n} from '../../../../_models/server-index';\nimport {\n Ses_ArchiveScope_Type,\n Ses_ClientImageAttachment_Response,\n Ses_ClientMessage_Response,\n Ses_MessagesChunk_Response,\n} from '../api-services/conversation.api-service.interface';\nimport { Ses_Conversation_ApiService } from '../api-services/ses-conversation.api-service';\nimport { SSt_Server_ApiService } from '../../../system/_modules/system-status/_services/sst-server.api-service';\nimport { Session_ApiService } from '../api-services/session.api-service';\nimport { CCAP_Socket_ControlService } from '../../../../_services/control-services/ccap-socket.control-service';\nimport { environment } from '../../../../../environments/environment';\n\n/** Szerver event nevek (egyezzen a socket service konstansokkal). */\nconst SOCKET_EVENT_ANSWER: string = 'answer';\nconst SOCKET_EVENT_NOTIFY_USER: string = 'notify-user';\nconst SOCKET_EVENT_AGENT_EVENTS: string = 'agent-events';\nconst SOCKET_EVENT_CONTEXT_UPDATED: string = 'context:updated';\nconst SOCKET_EVENT_MONITORING_EVENT: string = 'monitoring:event';\nconst SOCKET_EVENT_USER_INTERACTION_REQUEST: string = 'user-interaction:request';\nconst SOCKET_EVENT_USER_INTERACTION_RESOLVED: string = 'user-interaction:resolved';\n\n/** NTF notification tool ID — agent-events toolId felismeréshez. */\nconst NTF_TOOL_ID: string = 'ccap_notification';\n/** Agent-events phase: notification elküldve (message típus). */\nconst NTF_PHASE_SENT: string = 'notification-sent';\n/** Agent-events phase: notification válaszra vár (interaktív típus). */\nconst NTF_PHASE_WAITING: string = 'waiting-for-user';\n\n/**\n * Session data service.\n * Session state management; real-time események a Socket Control Service event$ streamből szűrve.\n */\n@Injectable({ providedIn: 'root' })\nexport class Session_DataService implements OnDestroy {\n\n /** Session detail cache (session + lastRun) sessionId szerint. */\n private sessionDetailBySessionId: Map<\n string,\n { session: CCAP_SessionListItem_Response; lastRun: AC_LastRunSummary_Response | null }\n > = new Map();\n\n /** Session info cache sessionId szerint. */\n private sessionInfoBySessionId: Map<string, AC_SessionInfo_Response> = new Map();\n\n /** Aktív session ID (main frame WebSocket indikátor). */\n readonly activeSessionId_$ = signal<string>('');\n\n /**\n * REQ-UI-SES-MOB-AUTOCLOSE-001: bump-counter signal — explicit kérés a session-list\n * sidebar mobil-bezárására. A `ses-list` (`createNewSession` után) bumpolja, a\n * `ses-shell` effect-tel figyeli és isMobile esetén bezárja a sidebar-t. Ez kiegészíti\n * a NavigationEnd-alapú auto-close-t azokra az esetekre, ahol a route-snapshot lag\n * miatt a NavigationEnd-handler nem fut megfelelően (vagy a flow nem navigation-alapú).\n */\n readonly requestSidebarCloseOnMobileBump_$ = signal<number>(0);\n\n /** Session lista. */\n readonly sessions_$ = signal<CCAP_SessionListItem_Response[]>([]);\n\n /** Session lista betöltési hiba (null = nincs hiba); nyers error az app-ccap-error-display-nek. */\n readonly sessionsLoadError_$ = signal<unknown | null>(null);\n\n /** Session lista betöltés folyamatban (true = loading). */\n readonly sessionsLoading_$ = signal<boolean>(false);\n\n /** Archivált session lista. */\n readonly archivedSessions_$ = signal<CCAP_SessionListItem_Response[]>([]);\n\n /** Archivált session lista betöltés folyamatban (true = loading). */\n readonly archivedSessionsLoading_$ = signal<boolean>(false);\n\n /** Üzenetek (real-time chat). */\n readonly messages_$ = signal<Ses_ClientMessage_Response[]>([]);\n\n /** Üzenetek betöltés folyamatban (true = loading). */\n readonly messagesLoading_$ = signal<boolean>(false);\n\n /** Üzenetek betöltési hiba (null = nincs hiba); nyers error az app-ccap-error-display-nek. */\n readonly messagesLoadError_$ = signal<unknown | null>(null);\n\n /**\n * REQ-SES-CONTENT-CHUNK-LOAD-AND-ARCHIVE-001 Slice 3+4 — chunk-pagináció state.\n * `total`: aktív (scope-szerinti) message-count; `hasMore`: van-e még régebbi\n * szakasz; `nextBeforeIndex`: a következő prepend kursor (vagy null);\n * `isLoadingOlder`: true a backward-prepend fetch alatt (UI top-spinner);\n * `archivedTotal`: a session-ben lévő archív üzenetek száma (Slice 4 — UI\n * „Archív szakasz megnyitása\" gomb-szám).\n */\n readonly chunkState_$ = signal<{\n total: number;\n hasMore: boolean;\n nextBeforeIndex: number | null;\n isLoadingOlder: boolean;\n archivedTotal: number;\n }>({\n total: 0,\n hasMore: false,\n nextBeforeIndex: null,\n isLoadingOlder: false,\n archivedTotal: 0,\n });\n\n /** Agent event-ek (phase, status a chat status/typing-hoz). */\n readonly agentEvents_$ = signal<Record<string, unknown>>({});\n\n /**\n * Aktuális futás `runExecutionMode`-ja az utolsó analyze-result agent-event után;\n * törlődik run vége / új run init / session váltás után (run summary + chat badge).\n */\n readonly activeRunExecutionMode_$ = signal<string>('');\n\n /** Context frissítés event (real-time context panel). */\n readonly contextUpdated_$ = signal<{\n sessionId: string;\n contextState: Record<string, unknown>;\n } | null>(null);\n\n /** Monitoring event (real-time timeline); signal – backward compat, de nem elsődleges csatorna. */\n readonly monitoringEvent_$ = signal<{\n sessionId: string;\n event: Record<string, unknown>;\n } | null>(null);\n\n /**\n * Monitoring event Subject (megbízható event stream).\n * A signal-alapú monitoringEvent_$ batch-elés miatt köztes event-eket veszíthet;\n * ez a Subject minden event-et garantáltan továbbít a subscriber-eknek.\n */\n readonly monitoringEvent_S: Subject<{\n sessionId: string;\n event: Record<string, unknown>;\n }> = new Subject();\n\n /** Pending user interaction request (agent kérdez, user válaszol a UI card-on). */\n readonly pendingInteraction_$ = signal<UIn_UserInteractionRequest_Interface | null>(null);\n\n /**\n * Pending notification event az agent-events stream-ből (ccap_notification tool hívás közben).\n * A chat UI inline notification kártyát / status szöveget renderel ebből.\n * phase: 'notification-sent' (message típus, rövid flash) vagy 'waiting-for-user' (interaktív, amíg válasz jön).\n */\n readonly pendingNotification_$ = signal<{\n phase: string;\n notificationTitle: string;\n notificationType: string;\n notificationPriority: string;\n } | null>(null);\n\n /** Session detail map (cache). */\n readonly sessionDetailMap_$ = signal<\n Map<string, { session: CCAP_SessionListItem_Response; lastRun: AC_LastRunSummary_Response | null }>\n >(new Map());\n\n /** Session detail betöltés folyamatban. */\n readonly sessionDetailLoading_$ = signal<boolean>(false);\n\n /** Session info map (cache). */\n readonly sessionInfoMap_$ = signal<Map<string, AC_SessionInfo_Response>>(new Map());\n\n /** Session info betöltés folyamatban. */\n readonly sessionInfoLoading_$ = signal<boolean>(false);\n\n /** Session info betöltési hiba (null = nincs hiba). */\n readonly sessionInfoLoadError_$ = signal<unknown | null>(null);\n\n /** Utolsó betöltött LLM debug trace (Info panel). */\n readonly llmDebugTraceEntries_$ = signal<AC_LlmDebugTraceEntry_Response[]>([]);\n\n /** LLM debug trace betöltés folyamatban. */\n readonly llmDebugTraceLoading_$ = signal<boolean>(false);\n\n /** LLM debug trace betöltési hiba. */\n readonly llmDebugTraceLoadError_$ = signal<unknown | null>(null);\n\n /** Socket event$ feliratkozás (ngOnDestroy-ben lemondjuk). */\n private eventSubscription: Subscription | null = null;\n\n /** effect: reconnect után session:attach újraküldése. */\n private connectedEffectRef: EffectRef | null = null;\n\n private readonly session_AS: Session_ApiService = inject(Session_ApiService);\n private readonly conversation_AS: Ses_Conversation_ApiService =\n inject(Ses_Conversation_ApiService);\n private readonly serverStatus_AS: SSt_Server_ApiService =\n inject(SSt_Server_ApiService);\n private readonly socket_CS: CCAP_Socket_ControlService =\n inject(CCAP_Socket_ControlService);\n\n /** Csatlakozás signal (Socket Service-ből delegálva). */\n get connected_$() {\n return this.socket_CS.connected_$;\n }\n\n /** Socket státusz signal (main frame indikátor: connecting | connected | error). */\n get socketStatus_$() {\n return this.socket_CS.status_$;\n }\n\n /** Utolsó socket hiba signal (tooltip copy-hoz); nyers error. */\n get lastSocketError_$() {\n return this.socket_CS.lastError_$;\n }\n\n /** Csatlakozási kísérletek száma (connect_error-kor nő, sikeres connect-nél nullázódik). */\n get connectAttemptCount_$() {\n return this.socket_CS.connectAttemptCount_$;\n }\n\n /** Aktív kapcsolódási diagnosztika futtatása (probe: szerver API + socket.io endpoint). */\n diagnoseConnection(): Promise<Record<string, unknown>> {\n return this.socket_CS.diagnoseConnection();\n }\n\n constructor() {\n this.eventSubscription = this.socket_CS.event$.subscribe(\n (envelope: { event: string; payload: Record<string, unknown> }): void => {\n this.handleSocketEvent(envelope);\n },\n );\n this.connectedEffectRef = effect((): void => {\n if (this.socket_CS.connected_$() && this.getActiveSessionId()) {\n this.socket_CS.emit('session:attach', {\n sessionId: this.getActiveSessionId(),\n });\n }\n });\n }\n\n /**\n * Socket event kezelése: sessionId/channelId alapján szűr, majd a megfelelő subject-ekbe pushol.\n */\n private handleSocketEvent(envelope: { event: string; payload: Record<string, unknown> }): void {\n const payload: Record<string, unknown> = envelope.payload ?? {};\n const activeId: string = this.getActiveSessionId();\n const channelId: string | undefined =\n typeof payload.channelId === 'string' ? payload.channelId : undefined;\n const sessionIdFromPayload: string | undefined =\n typeof payload.sessionId === 'string' ? payload.sessionId : undefined;\n const isForActive: boolean =\n !channelId && !sessionIdFromPayload\n || channelId === activeId\n || sessionIdFromPayload === activeId;\n\n if (envelope.event === SOCKET_EVENT_ANSWER && isForActive) {\n const content: string = typeof payload.content === 'string' ? payload.content : '';\n const timestamp: string =\n typeof payload.timestamp === 'string' ? payload.timestamp : new Date().toISOString();\n const runId: string | undefined =\n typeof payload.runId === 'string' ? payload.runId : undefined;\n const base: Ses_ClientMessage_Response = {\n role: 'assistant',\n content: content,\n timestamp: new Date(timestamp),\n };\n const withRun: Ses_ClientMessage_Response = runId\n ? { ...base, runId: runId }\n : base;\n const stamped: Ses_ClientMessage_Response = this.ensureClientListKey(withRun);\n this.messages_$.set([...this.messages_$(), stamped]);\n return;\n }\n\n if (envelope.event === SOCKET_EVENT_NOTIFY_USER && isForActive) {\n const content: string = typeof payload.content === 'string' ? payload.content : '';\n DyFM_Log.info(\n `CCAP_SessionDS | notify-user received: ${content.substring(0, 120)}…`,\n );\n const stamped: Ses_ClientMessage_Response = this.ensureClientListKey({\n role: 'system',\n content: content,\n timestamp: new Date(),\n });\n this.messages_$.set([...this.messages_$(), stamped]);\n return;\n }\n\n if (envelope.event === SOCKET_EVENT_AGENT_EVENTS) {\n const eventData: Record<string, unknown> =\n (typeof payload.eventData === 'object' && payload.eventData !== null)\n ? (payload.eventData as Record<string, unknown>)\n : {};\n this.agentEvents_$.set(eventData);\n this.applyAgentEventRunExecutionModeLatch(eventData);\n\n // NTF notification tool hívás felismerése az agent-events stream-ből\n const toolId: string = typeof eventData.toolId === 'string' ? eventData.toolId : '';\n const eventPhase: string = typeof eventData.phase === 'string' ? eventData.phase : '';\n if (toolId === NTF_TOOL_ID\n && (eventPhase === NTF_PHASE_SENT || eventPhase === NTF_PHASE_WAITING)) {\n this.pendingNotification_$.set({\n phase: eventPhase,\n notificationTitle: typeof eventData.notificationTitle === 'string'\n ? eventData.notificationTitle : '',\n notificationType: typeof eventData.notificationType === 'string'\n ? eventData.notificationType : '',\n notificationPriority: typeof eventData.notificationPriority === 'string'\n ? eventData.notificationPriority : 'info',\n });\n } else if (this.pendingNotification_$()) {\n // Bármely más agent-event törli a pending notification-t (a tool befejeződött)\n this.pendingNotification_$.set(null);\n }\n\n const toolErrorContent: unknown = eventData.toolError;\n const chId: string | undefined =\n channelId ?? (eventData.channelId as string | undefined);\n const isForThisSession: boolean = !chId || chId === activeId;\n const toolErrorStr: string = DisplayString_Util.toDisplayString(toolErrorContent).trim();\n if (toolErrorStr.length > 0 && isForThisSession) {\n DyFM_Log.info(\n `CCAP_SessionDS | toolError from agent-events, pushing to chat: ${toolErrorStr.substring(0, 80)}…`,\n );\n const stamped: Ses_ClientMessage_Response = this.ensureClientListKey({\n role: 'system',\n content: toolErrorStr,\n timestamp: new Date(),\n });\n this.messages_$.set([...this.messages_$(), stamped]);\n }\n return;\n }\n\n if (envelope.event === SOCKET_EVENT_CONTEXT_UPDATED) {\n const sid: string =\n typeof payload.sessionId === 'string' ? payload.sessionId : '';\n const contextState: Record<string, unknown> =\n (typeof payload.contextState === 'object' && payload.contextState !== null)\n ? (payload.contextState as Record<string, unknown>)\n : {};\n this.contextUpdated_$.set({\n sessionId: sid,\n contextState: contextState,\n });\n return;\n }\n\n if (envelope.event === SOCKET_EVENT_MONITORING_EVENT) {\n const sid: string =\n typeof payload.sessionId === 'string' ? payload.sessionId : '';\n const ev: Record<string, unknown> =\n (typeof payload.event === 'object' && payload.event !== null)\n ? (payload.event as Record<string, unknown>)\n : {};\n const monitoringPayload: { sessionId: string; event: Record<string, unknown> } = {\n sessionId: sid,\n event: ev,\n };\n this.monitoringEvent_$.set(monitoringPayload);\n this.monitoringEvent_S.next(monitoringPayload);\n return;\n }\n\n if (envelope.event === SOCKET_EVENT_USER_INTERACTION_REQUEST && isForActive) {\n this.pendingInteraction_$.set(payload as unknown as UIn_UserInteractionRequest_Interface);\n return;\n }\n\n // User interaction resolved (bármely csatornáról érkező válasz) → inline card eltüntetése\n if (envelope.event === SOCKET_EVENT_USER_INTERACTION_RESOLVED && isForActive) {\n const resolvedId: string | undefined =\n typeof (payload as Record<string, unknown>).interactionId === 'string'\n ? (payload as Record<string, unknown>).interactionId as string\n : undefined;\n if (!resolvedId) {\n return;\n }\n const current: UIn_UserInteractionRequest_Interface | null = this.pendingInteraction_$();\n if (current?.interactionId === resolvedId) {\n this.pendingInteraction_$.set(null);\n }\n return;\n }\n }\n\n /**\n * Session lista frissítése a server-ről.\n * Hiba esetén sessionsLoadError$ értesül, hogy a UI megkülönböztesse az üres listát a hibától.\n * @returns A betöltött session lista (sikeres betöltésnél), hibánál üres tömb.\n */\n async loadSessions(): Promise<CCAP_SessionListItem_Response[]> {\n this.sessionsLoading_$.set(true);\n try {\n this.sessionsLoadError_$.set(null);\n\n const response = await this.session_AS.listSessions();\n\n this.sessions_$.set(response.sessions);\n return response.sessions;\n } catch (error: unknown) {\n DyFM_Error.logSimple('CCAP_SessionDS | Failed to load sessions', error);\n\n this.sessionsLoadError_$.set(error);\n return [];\n } finally {\n this.sessionsLoading_$.set(false);\n }\n }\n\n /**\n * Új session létrehozása (web UI \"New session\" gomb).\n * Létrehozza a session-t, frissíti a listát, visszaadja az új session-t.\n */\n async createSession(params?: { name?: string }): Promise<CCAP_SessionListItem_Response> {\n const response = await this.session_AS.createSession(params);\n\n await this.loadSessions();\n\n return response.session;\n }\n\n /**\n * Session másolása (conversation fork).\n * Új session-t hoz létre a forrás session összes conversation üzenetével.\n */\n async copySession(params: {\n sessionId: string;\n name?: string;\n }): Promise<CCAP_SessionListItem_Response> {\n const response = await this.session_AS.copySession(params);\n\n await this.loadSessions();\n\n return response.session;\n }\n\n /**\n * REQ-SES-FORK-001 Slice 2: session fork — új session a forrás üzeneteivel a megadott\n * `forkUntilMessageKey`-ig (inclusive). Ismeretlen key esetén a szerver `CCAP-SES-FORK-NF`\n * `DyFM_Error`-t ad vissza; a hívó komponens kezeli (pl. toast + popup bezárás).\n */\n async forkSession(params: {\n sessionId: string;\n forkUntilMessageKey: string;\n name?: string;\n }): Promise<CCAP_SessionListItem_Response> {\n const response = await this.session_AS.copySession({\n sessionId: params.sessionId,\n name: params.name,\n forkUntilMessageKey: params.forkUntilMessageKey,\n });\n\n await this.loadSessions();\n\n return response.session;\n }\n\n /**\n * Archivált session-ek betöltése (\"Archiváltak betöltése\" gomb).\n * Az eredmény az archivedSessions$-on keresztül érhető el.\n */\n async loadArchivedSessions(): Promise<CCAP_SessionListItem_Response[]> {\n this.archivedSessionsLoading_$.set(true);\n try {\n const response = await this.session_AS.listArchivedSessions();\n\n this.archivedSessions_$.set(response.sessions);\n return response.sessions;\n } catch (error: unknown) {\n DyFM_Error.logSimple(\n 'CCAP_SessionDS | Failed to load archived sessions',\n error,\n );\n\n this.archivedSessions_$.set([]);\n return [];\n } finally {\n this.archivedSessionsLoading_$.set(false);\n }\n }\n\n /**\n * Aktív session beállítása; session:attach küldése a Socket Service-en (ha csatlakozva van).\n * Session váltáskor az üzenetek törlődnek.\n * Ugyanarra az id-re második hívás (pl. effect dupla futás dev-ben) nem törli a chatet.\n */\n setActiveSession(sessionId: string): void {\n const previousId: string = this.activeSessionId_$();\n if (previousId !== sessionId) {\n this.activeSessionId_$.set(sessionId);\n this.clearMessages();\n this.pendingInteraction_$.set(null);\n this.activeRunExecutionMode_$.set('');\n }\n this.socket_CS.emit('session:attach', { sessionId: sessionId });\n }\n\n /**\n * Aktív session ID lekérdezése.\n */\n getActiveSessionId(): string {\n return this.activeSessionId_$();\n }\n\n /**\n * WebSocket újracsatlakozás (main frame indikátor kattintás).\n * Először status refresh: ha a socketUrl megváltozott (pl. szerver most lett elérhető), lap újratöltés;\n * különben csak socket reconnect.\n */\n async reconnectSocket(): Promise<void> {\n try {\n const status = await this.serverStatus_AS.getStatus();\n const origin: string =\n typeof window !== 'undefined' ? window.location.origin : '';\n const newSocketUrl: string = SocketUrl_Util.computeSocketUrlFromStatus(\n { httpPort: status.httpPort, socketPort: status.socketPort },\n origin,\n );\n const currentSocketUrl: string = environment.socketUrl ?? origin;\n if (newSocketUrl !== currentSocketUrl && typeof window !== 'undefined') {\n environment.socketUrl = newSocketUrl;\n DyFM_Log.info(\n 'CCAP_SessionDS | socketUrl changed on reconnect, reloading',\n newSocketUrl,\n );\n window.location.reload();\n return;\n }\n } catch {\n // Status fetch fail: csak socket reconnect (ugyanarra a címre).\n }\n this.socket_CS.reconnect();\n }\n\n /**\n * Futó execution leállítása (stop gomb).\n * Jelzi a szervernek, hogy a jelenlegi agentic loop-ot le kell állítani.\n */\n async stopExecution(sessionId: string): Promise<boolean> {\n try {\n const result: { success: boolean } =\n await this.session_AS.stopExecution(sessionId);\n return result.success;\n } catch (err: unknown) {\n DyFM_Error.logSimple('CCAP_Session_DS | stopExecution failed', err);\n return false;\n }\n }\n\n /**\n * Üzenet küldése REST API-n keresztül (POST /session/:id/messages).\n * A valós idejű válaszok (answer, notify-user, agent-events, stb.) továbbra is a WebSocketon érkeznek.\n * Ha a content \"/new\", új session-t hoz létre (REST) és visszaadja; különben az üzenet a REST végpontra megy.\n * Ha nincs sessionId vagy az API hiba, sent: false; a komponens jelezheti és megőrizheti a szöveget (opcionális error szöveg).\n */\n async sendMessageViaSocket(\n content: string,\n imageAttachments?: Ses_ClientImageAttachment_Response[],\n ): Promise<{\n newSession?: CCAP_SessionListItem_Response;\n sent: boolean;\n error?: string;\n }> {\n const trimmed: string = content.trim();\n if (trimmed === '/new') {\n const newSession: CCAP_SessionListItem_Response = await this.createSession();\n return { newSession: newSession, sent: true };\n }\n\n const sessionId: string = this.activeSessionId_$();\n if (!sessionId) {\n return { sent: false };\n }\n\n const hasImages: boolean = (imageAttachments?.length ?? 0) > 0;\n if (!trimmed.length && !hasImages) {\n return { sent: false };\n }\n\n // Optimista megjelenítés: a user üzenete azonnal megjelenik a chatben, mielőtt a REST hívás megtörténne.\n // Így a felhasználó azonnal látja a saját üzenetét, miközben a run elindul.\n const optimisticMsg: Ses_ClientMessage_Response = {\n role: 'user',\n content: content,\n timestamp: new Date(),\n };\n const optimisticStamped: Ses_ClientMessage_Response =\n this.ensureClientListKey(optimisticMsg);\n this.messages_$.set([...this.messages_$(), optimisticStamped]);\n\n try {\n const response = await this.conversation_AS.sendMessage({\n sessionId: sessionId,\n content: content,\n imageAttachments: imageAttachments,\n });\n\n // REST válasz után frissítjük az optimista üzenetet a szerver által adott mezőkkel (messageKey, hasTtsAudio).\n const serverMsg: Ses_ClientMessage_Response = response.message;\n const updatedMessages: Ses_ClientMessage_Response[] = this.messages_$().map(\n (msg: Ses_ClientMessage_Response): Ses_ClientMessage_Response => {\n if (msg.clientListKey !== optimisticStamped.clientListKey) {\n return msg;\n }\n const merged: Ses_ClientMessage_Response = { ...msg };\n if (serverMsg.messageKey) {\n merged.messageKey = serverMsg.messageKey;\n }\n if (serverMsg.hasTtsAudio !== undefined) {\n merged.hasTtsAudio = serverMsg.hasTtsAudio;\n }\n return merged;\n },\n );\n this.messages_$.set(updatedMessages);\n return { sent: true };\n } catch (error: unknown) {\n DyFM_Error.logSimple(\n 'CCAP_SessionDS | Failed to send message via REST',\n error,\n );\n\n // Hiba esetén eltávolítjuk az optimista üzenetet a chatből\n const rolledBack: Ses_ClientMessage_Response[] = this.messages_$().filter(\n (msg: Ses_ClientMessage_Response): boolean =>\n msg.clientListKey !== optimisticStamped.clientListKey,\n );\n this.messages_$.set(rolledBack);\n\n const errorMessage: string =\n error instanceof Error ? error.message : 'Üzenet küldése sikertelen.';\n return { sent: false, error: errorMessage };\n }\n }\n\n /**\n * Üzenet küldése egy tetszőleges CCAP Session-be REST API-n keresztül (POST /session/:id/messages).\n * Nem frissít lokális chat állapotot — kívülről (pl. Quick Input) hívható.\n */\n async sendMessageToSession(params: { sessionId: string; content: string }): Promise<void> {\n await this.conversation_AS.sendMessage({\n sessionId: params.sessionId,\n content: params.content,\n });\n }\n\n /**\n * User interaction válasz küldése a szerverre Socket.io-n keresztül.\n * Törli a pending interaction signal-t.\n */\n sendInteractionResponse(response: UIn_UserInteractionResponse_Interface): void {\n this.socket_CS.emit('user-interaction:response', response as unknown as Record<string, unknown>);\n this.pendingInteraction_$.set(null);\n }\n\n /**\n * Üzenetek törlése (session váltáskor). A chunk-state-et is reset-eli.\n */\n clearMessages(): void {\n this.messages_$.set([]);\n this.chunkState_$.set({\n total: 0,\n hasMore: false,\n nextBeforeIndex: null,\n isLoadingOlder: false,\n archivedTotal: 0,\n });\n }\n\n /**\n * Üzenetek beállítása (pl. API-ból betöltött kezdeti üzenetek a chat single source of truth-hoz).\n */\n setMessages(messages: Ses_ClientMessage_Response[]): void {\n const raw: Ses_ClientMessage_Response[] = messages ?? [];\n const stamped: Ses_ClientMessage_Response[] = raw.map(\n (m: Ses_ClientMessage_Response): Ses_ClientMessage_Response =>\n this.ensureClientListKey(m),\n );\n this.messages_$.set(stamped);\n }\n\n /**\n * Stabil lista-track kulcs: meglévő clientListKey, különben messageKey (API), különben UUID.\n */\n private ensureClientListKey(\n msg: Ses_ClientMessage_Response,\n ): Ses_ClientMessage_Response {\n const kept: string | undefined = msg.clientListKey?.trim();\n if (kept?.length) {\n return msg;\n }\n const fromTts: string | undefined = msg.messageKey?.trim();\n if (fromTts?.length) {\n return { ...msg, clientListKey: fromTts };\n }\n return { ...msg, clientListKey: globalThis.crypto.randomUUID() };\n }\n\n /**\n * Egy üzenet TTS cache jelölése: a messageKey-hez tartozó üzenetnél hasTtsAudio = true.\n * A message bubble így audio lejátszót jelenít meg a következő render-nél.\n */\n setMessageTtsCached(messageKey: string): void {\n const current: Ses_ClientMessage_Response[] = this.messages_$();\n const updated: Ses_ClientMessage_Response[] = current.map(\n (msg: Ses_ClientMessage_Response): Ses_ClientMessage_Response =>\n msg.messageKey === messageKey\n ? { ...msg, hasTtsAudio: true }\n : msg,\n );\n this.messages_$.set(updated);\n }\n\n /**\n * Üzenetek betöltése (mindig teljes lista – conversationFull); ha aktív session, setMessages.\n * Chat komponens ezt hívja; navigáció után cache nem kell, mert messages$ az aktív session-é.\n */\n async loadMessagesForView(sessionId: string): Promise<Ses_ClientMessage_Response[]> {\n this.messagesLoading_$.set(true);\n this.messagesLoadError_$.set(null);\n try {\n const response = await this.conversation_AS.getMessages({\n sessionId: sessionId,\n viewMode: 'conversationFull',\n });\n const messages: Ses_ClientMessage_Response[] = response.messages ?? [];\n if (sessionId === this.activeSessionId_$()) {\n this.setMessages(messages);\n }\n return messages;\n } catch (error: unknown) {\n DyFM_Error.logSimple(\n 'CCAP_SessionDS | Failed to load messages for view',\n error,\n );\n this.messagesLoadError_$.set(error);\n return [];\n } finally {\n this.messagesLoading_$.set(false);\n }\n }\n\n /**\n * REQ-SES-CONTENT-CHUNK-LOAD-AND-ARCHIVE-001 Slice 3 — initial-chunk fetch:\n * a session megnyitásakor csak az utolsó N üzenetet hozza (default 50)\n * a tail-en. A chunk-state-et a válasz alapján beállítja.\n *\n * `messages_$`-t replace-eli (nem prepend), hogy a régi session üzenetek\n * ne ragadjanak benne. Ha a session közben nem aktív, a state nem változik.\n */\n async loadInitialChunk(params: {\n sessionId: string;\n viewMode?: string;\n limit?: number;\n archiveScope?: Ses_ArchiveScope_Type;\n }): Promise<Ses_MessagesChunk_Response | null> {\n this.messagesLoading_$.set(true);\n this.messagesLoadError_$.set(null);\n try {\n const response: Ses_MessagesChunk_Response =\n await this.conversation_AS.getMessagesChunked({\n sessionId: params.sessionId,\n viewMode: params.viewMode ?? 'conversationFull',\n latest: true,\n limit: params.limit ?? 50,\n archiveScope: params.archiveScope,\n });\n if (params.sessionId === this.activeSessionId_$()) {\n this.setMessages(response.messages ?? []);\n this.chunkState_$.set({\n total: response.total,\n hasMore: response.hasMore,\n nextBeforeIndex: response.nextBeforeIndex,\n isLoadingOlder: false,\n archivedTotal: response.archivedTotal,\n });\n }\n return response;\n } catch (error: unknown) {\n DyFM_Error.logSimple(\n 'CCAP_SessionDS | Failed to load initial chunk',\n error,\n );\n this.messagesLoadError_$.set(error);\n return null;\n } finally {\n this.messagesLoading_$.set(false);\n }\n }\n\n /**\n * REQ-SES-CONTENT-CHUNK-LOAD-AND-ARCHIVE-001 Slice 3 — backward-prepend:\n * a `chunkState_$().nextBeforeIndex` cursor alapján a régebbi szeletet\n * prepend-eli a `messages_$` elejére. Ha `hasMore=false` vagy már fut egy\n * fetch (`isLoadingOlder`), no-op.\n */\n async loadOlderChunk(params: {\n sessionId: string;\n viewMode?: string;\n limit?: number;\n archiveScope?: Ses_ArchiveScope_Type;\n }): Promise<Ses_MessagesChunk_Response | null> {\n const state = this.chunkState_$();\n if (!state.hasMore || state.nextBeforeIndex == null || state.isLoadingOlder) {\n return null;\n }\n this.chunkState_$.set({ ...state, isLoadingOlder: true });\n try {\n const response: Ses_MessagesChunk_Response =\n await this.conversation_AS.getMessagesChunked({\n sessionId: params.sessionId,\n viewMode: params.viewMode ?? 'conversationFull',\n beforeIndex: state.nextBeforeIndex,\n limit: params.limit ?? 50,\n archiveScope: params.archiveScope,\n });\n if (params.sessionId === this.activeSessionId_$()) {\n const older: Ses_ClientMessage_Response[] = (response.messages ?? []).map(\n (m: Ses_ClientMessage_Response): Ses_ClientMessage_Response =>\n this.ensureClientListKey(m),\n );\n this.messages_$.set([...older, ...this.messages_$()]);\n this.chunkState_$.set({\n total: response.total,\n hasMore: response.hasMore,\n nextBeforeIndex: response.nextBeforeIndex,\n isLoadingOlder: false,\n archivedTotal: response.archivedTotal,\n });\n } else {\n this.chunkState_$.set({ ...state, isLoadingOlder: false });\n }\n return response;\n } catch (error: unknown) {\n DyFM_Error.logSimple(\n 'CCAP_SessionDS | Failed to load older chunk',\n error,\n );\n this.messagesLoadError_$.set(error);\n this.chunkState_$.set({ ...state, isLoadingOlder: false });\n return null;\n }\n }\n\n /**\n * Session detail (session + lastRun) betöltése; cache-be mentés.\n */\n async loadSessionDetail(sessionId: string): Promise<{\n session: CCAP_SessionListItem_Response;\n lastRun: AC_LastRunSummary_Response | null;\n } | null> {\n if (!sessionId) {\n return null;\n }\n this.sessionDetailLoading_$.set(true);\n try {\n const response = await this.session_AS.getSession(sessionId);\n const entry: {\n session: CCAP_SessionListItem_Response;\n lastRun: AC_LastRunSummary_Response | null;\n } = {\n session: response.session,\n lastRun: response.lastRun ?? null,\n };\n this.sessionDetailBySessionId.set(sessionId, entry);\n this.sessionDetailMap_$.set(new Map(this.sessionDetailBySessionId));\n return entry;\n } catch (error: unknown) {\n DyFM_Error.logSimple(\n 'CCAP_SessionDS | Failed to load session detail',\n error,\n );\n return null;\n } finally {\n this.sessionDetailLoading_$.set(false);\n }\n }\n\n /**\n * Cachelt session detail lekérdezése (sync).\n */\n getCachedSessionDetail(sessionId: string): {\n session: CCAP_SessionListItem_Response;\n lastRun: AC_LastRunSummary_Response | null;\n } | null {\n return this.sessionDetailBySessionId.get(sessionId) ?? null;\n }\n\n /**\n * Session info betöltése; cache-be mentés.\n */\n async loadSessionInfo(sessionId: string): Promise<AC_SessionInfo_Response | null> {\n if (!sessionId) {\n return null;\n }\n this.sessionInfoLoading_$.set(true);\n this.sessionInfoLoadError_$.set(null);\n try {\n const response: AC_SessionInfo_Response =\n await this.session_AS.getSessionInfo(sessionId);\n this.sessionInfoBySessionId.set(sessionId, response);\n this.sessionInfoMap_$.set(new Map(this.sessionInfoBySessionId));\n return response;\n } catch (error: unknown) {\n DyFM_Error.logSimple(\n 'CCAP_SessionDS | Failed to load session info',\n error,\n );\n this.sessionInfoLoadError_$.set(error);\n return null;\n } finally {\n this.sessionInfoLoading_$.set(false);\n }\n }\n\n /**\n * Cachelt session info lekérdezése (sync).\n */\n getCachedSessionInfo(sessionId: string): AC_SessionInfo_Response | null {\n return this.sessionInfoBySessionId.get(sessionId) ?? null;\n }\n\n /**\n * LLM debug trace bejegyzések lekérése egy run-hoz — nincs globális signal írás (több run trace blokk párhuzamosan).\n */\n async fetchLlmDebugTraceEntriesForRun(params: {\n sessionId: string;\n runId: string;\n }): Promise<AC_LlmDebugTraceEntry_Response[]> {\n const sid: string = params.sessionId?.trim() ?? '';\n const rid: string = params.runId?.trim() ?? '';\n if (!sid || !rid) {\n return [];\n }\n try {\n const response: { entries: AC_LlmDebugTraceEntry_Response[] } =\n await this.session_AS.getLlmDebugTrace({\n sessionId: sid,\n runId: rid,\n });\n return response.entries ?? [];\n } catch {\n return [];\n }\n }\n\n /**\n * LLM debug trace lista betöltése session + run alapján (MongoDB trace tábla).\n */\n async loadLlmDebugTrace(params: {\n sessionId: string;\n runId: string;\n }): Promise<void> {\n const sid: string = params.sessionId?.trim() ?? '';\n const rid: string = params.runId?.trim() ?? '';\n\n if (!sid || !rid) {\n this.llmDebugTraceEntries_$.set([]);\n return;\n }\n\n this.llmDebugTraceLoading_$.set(true);\n this.llmDebugTraceLoadError_$.set(null);\n\n try {\n const response: { entries: AC_LlmDebugTraceEntry_Response[] } =\n await this.session_AS.getLlmDebugTrace({\n sessionId: sid,\n runId: rid,\n });\n this.llmDebugTraceEntries_$.set(response.entries);\n } catch (error: unknown) {\n DyFM_Error.logSimple(\n 'CCAP_SessionDS | Failed to load LLM debug trace',\n error,\n );\n this.llmDebugTraceLoadError_$.set(error);\n this.llmDebugTraceEntries_$.set([]);\n } finally {\n this.llmDebugTraceLoading_$.set(false);\n }\n }\n\n /**\n * Session frissítése (pl. archive / de-archive); API hívás után lista frissítése.\n * Archive állapotváltáskor mindkét lista reload (aktív + archivált szekció szinkron).\n */\n async updateSession(params: {\n sessionId: string;\n updates: Record<string, unknown>;\n }): Promise<CCAP_SessionListItem_Response | null> {\n try {\n const response = await this.session_AS.updateSession(params);\n const archived: unknown = params.updates.archived;\n if (archived === true || archived === false) {\n await this.loadSessions();\n await this.loadArchivedSessions();\n } else {\n await this.loadSessions();\n }\n return response.session;\n } catch (error: unknown) {\n DyFM_Error.logSimple(\n 'CCAP_SessionDS | Failed to update session',\n error,\n );\n return null;\n }\n }\n\n /**\n * Agent-events alapján `activeRunExecutionMode_$` latch frissítése.\n */\n private applyAgentEventRunExecutionModeLatch(eventData: Record<string, unknown>): void {\n const phaseRaw: unknown = eventData.phase;\n const phaseStr: string = typeof phaseRaw === 'string' ? phaseRaw.trim() : '';\n if (phaseStr === AC_RunFlowPhase_Type.analyzeResult) {\n const modeRaw: unknown = eventData.runExecutionMode;\n if (typeof modeRaw === 'string' && modeRaw.trim() !== '') {\n const normalized: string | undefined =\n Session_DataService.normalizeRunExecutionModeSocketValue(modeRaw);\n if (normalized !== undefined) {\n this.activeRunExecutionMode_$.set(normalized);\n }\n }\n return;\n }\n if (\n phaseStr === AC_RunFlowPhase_Type.runFlowComplete\n || phaseStr === AC_RunFlowPhase_Type.runInitialization\n ) {\n this.activeRunExecutionMode_$.set('');\n }\n }\n\n /**\n * Socket `runExecutionMode` érték whitelist; ismeretlen string → undefined.\n */\n private static normalizeRunExecutionModeSocketValue(raw: string): string | undefined {\n const trimmed: string = raw.trim();\n const known: AC_RunExecutionMode_Type[] = [\n AC_RunExecutionMode_Type.instant,\n AC_RunExecutionMode_Type.agenticAny,\n AC_RunExecutionMode_Type.ask,\n AC_RunExecutionMode_Type.plan,\n ];\n for (const v of known) {\n if (trimmed === v) {\n return v;\n }\n }\n return undefined;\n }\n\n ngOnDestroy(): void {\n this.monitoringEvent_S.complete();\n if (this.eventSubscription) {\n this.eventSubscription.unsubscribe();\n this.eventSubscription = null;\n }\n if (this.connectedEffectRef) {\n this.connectedEffectRef.destroy();\n this.connectedEffectRef = null;\n }\n }\n}\n", "import { inject, Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\n\nimport { firstValueFrom } from 'rxjs';\n\nimport { environment } from '../../../../../environments/environment';\nimport {\n Ses_ArchiveScope_Type,\n Ses_ClientImageAttachment_Response,\n Ses_ClientMessage_Response,\n Ses_MessagesChunk_Response,\n} from './conversation.api-service.interface';\n\n/**\n * Conversation API service.\n * HTTP hívások a server conversation endpoint-jaira.\n */\n@Injectable({ providedIn: 'root' })\nexport class Ses_Conversation_ApiService {\n\n /** API base URL. */\n private baseUrl: string = `${environment.api.baseUrl}/session`;\n\n private readonly http: HttpClient = inject(HttpClient);\n\n /**\n * Üzenetek lekérdezése viewMode alapján.\n */\n getMessages(params: {\n sessionId: string;\n viewMode: string;\n }): Promise<{\n messages: Ses_ClientMessage_Response[];\n }> {\n return firstValueFrom(\n this.http.get<{\n messages: Ses_ClientMessage_Response[];\n }>(\n `${this.baseUrl}/${params.sessionId}/messages`,\n { params: { viewMode: params.viewMode } },\n ),\n );\n }\n\n /**\n * REQ-SES-CONTENT-CHUNK-LOAD-AND-ARCHIVE-001 Slice 3 — chunk-fetch a CCAP\n * Session-en. `latest=true` boot-strap-re az utolsó N üzenetet kéri,\n * `beforeIndex` paraméterrel a régebbi szeletet (backward prepend).\n */\n getMessagesChunked(params: {\n sessionId: string;\n viewMode: string;\n beforeIndex?: number;\n limit?: number;\n latest?: boolean;\n archiveScope?: Ses_ArchiveScope_Type;\n }): Promise<Ses_MessagesChunk_Response> {\n const httpParams: Record<string, string> = {\n viewMode: params.viewMode,\n };\n if (params.beforeIndex != null) {\n httpParams['beforeIndex'] = String(params.beforeIndex);\n }\n if (params.limit != null) {\n httpParams['limit'] = String(params.limit);\n }\n if (params.latest) {\n httpParams['latest'] = '1';\n }\n if (params.archiveScope) {\n httpParams['archiveScope'] = params.archiveScope;\n }\n return firstValueFrom(\n this.http.get<Ses_MessagesChunk_Response>(\n `${this.baseUrl}/${params.sessionId}/messages/chunk`,\n { params: httpParams },\n ),\n );\n }\n\n /**\n * Új üzenet küldése.\n */\n sendMessage(params: {\n sessionId: string;\n content: string;\n imageAttachments?: Ses_ClientImageAttachment_Response[];\n }): Promise<{\n message: Ses_ClientMessage_Response;\n }> {\n return firstValueFrom(\n this.http.post<{\n message: Ses_ClientMessage_Response;\n }>(\n `${this.baseUrl}/${params.sessionId}/messages`,\n {\n content: params.content,\n imageAttachments: params.imageAttachments,\n },\n ),\n );\n }\n}\n", "import { inject, Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\n\nimport { firstValueFrom } from 'rxjs';\n\nimport { environment } from '../../../../../environments/environment';\nimport { AC_LastRunSummary_Response } from '../../../../_models/interfaces/session/ccap-last-run-summary.interface';\nimport {\n AC_LlmDebugTraceEntry_Response,\n AC_SessionInfo_Response,\n} from '../../../../_models/server-index';\nimport {\n CCAP_SessionListItem_Response,\n} from '../../../../_models/interfaces/session/ccap-session-list-item.interface';\nimport { ExS_InstanceContext_DataService } from '../../../external-sessions/_services/exs-instance-context.data-service';\n\n/**\n * Session API service.\n * HTTP hívások a server session endpoint-jaira.\n * Minden hívás `?ccapId=<active>` paramot küld (REQ-PEI-016) —\n * a ccapId forrása az instance-szelektor (`ExS_InstanceContext_DataService.activeCcapId_$`).\n */\n@Injectable({ providedIn: 'root' })\nexport class Session_ApiService {\n\n /** API base URL. */\n private baseUrl: string = `${environment.api.baseUrl}/session`;\n\n private readonly http: HttpClient = inject(HttpClient);\n\n private readonly peiContext_DS: ExS_InstanceContext_DataService =\n inject(ExS_InstanceContext_DataService);\n\n /**\n * Aktuális ccapId — az instance-szelektor értékéből (REQ-PEI-016).\n */\n private currentCcapId(): string {\n return this.peiContext_DS.activeCcapId_$();\n }\n\n /**\n * ccapId hozzáfűzése HttpParams-hoz.\n */\n private withCcapId(params: HttpParams): HttpParams {\n const ccapId: string = this.currentCcapId();\n if (!ccapId) {\n return params;\n }\n return params.set('ccapId', ccapId);\n }\n\n /**\n * Session lista lekérdezése (csak nem archivált session-ök).\n */\n listSessions(): Promise<{\n sessions: CCAP_SessionListItem_Response[];\n }> {\n const httpParams: HttpParams = this.withCcapId(new HttpParams());\n return firstValueFrom(\n this.http.get<{\n sessions: CCAP_SessionListItem_Response[];\n }>(this.baseUrl, { params: httpParams }),\n );\n }\n\n /**\n * Archivált session-ek lekérdezése.\n */\n listArchivedSessions(): Promise<{\n sessions: CCAP_SessionListItem_Response[];\n }> {\n let httpParams: HttpParams = this.withCcapId(new HttpParams());\n httpParams = httpParams.set('archived', 'true');\n return firstValueFrom(\n this.http.get<{\n sessions: CCAP_SessionListItem_Response[];\n }>(this.baseUrl, { params: httpParams }),\n );\n }\n\n /**\n * Új session létrehozása (web UI \"New session\" gomb).\n * Opcionális `name`: kezdő lista-név (pl. Quick Input Send to session → új CCAP Session).\n */\n createSession(params?: { name?: string }): Promise<{\n session: CCAP_SessionListItem_Response;\n }> {\n const body: { name?: string } = {};\n const trimmedName: string | undefined =\n params?.name !== undefined ? params.name.trim() : undefined;\n if (trimmedName !== undefined && trimmedName.length > 0) {\n body.name = trimmedName;\n }\n const httpParams: HttpParams = this.withCcapId(new HttpParams());\n return firstValueFrom(\n this.http.post<{\n session: CCAP_SessionListItem_Response;\n }>(this.baseUrl, body, { params: httpParams }),\n );\n }\n\n /**\n * Session detail lekérdezése (session + opcionális lastRun intent/goal/summary).\n */\n getSession(sessionId: string): Promise<{\n session: CCAP_SessionListItem_Response;\n lastRun?: AC_LastRunSummary_Response;\n }> {\n const httpParams: HttpParams = this.withCcapId(new HttpParams());\n return firstValueFrom(\n this.http.get<{\n session: CCAP_SessionListItem_Response;\n lastRun?: AC_LastRunSummary_Response;\n }>(`${this.baseUrl}/${sessionId}`, { params: httpParams }),\n );\n }\n\n /**\n * Session frissítése (név, státusz).\n */\n updateSession(params: {\n sessionId: string;\n updates: Record<string, unknown>;\n }): Promise<{\n session: CCAP_SessionListItem_Response;\n }> {\n const httpParams: HttpParams = this.withCcapId(new HttpParams());\n return firstValueFrom(\n this.http.patch<{\n session: CCAP_SessionListItem_Response;\n }>(\n `${this.baseUrl}/${params.sessionId}`,\n params.updates,\n { params: httpParams },\n ),\n );\n }\n\n /**\n * Session info lekérdezése (used inputs, used elements, full active context).\n */\n getSessionInfo(sessionId: string): Promise<AC_SessionInfo_Response> {\n const httpParams: HttpParams = this.withCcapId(new HttpParams());\n return firstValueFrom(\n this.http.get<AC_SessionInfo_Response>(\n `${this.baseUrl}/${sessionId}/session-info`,\n { params: httpParams },\n ),\n );\n }\n\n /**\n * Session másolása — teljes history vagy fork a megadott `forkUntilMessageKey`-ig (REQ-SES-FORK-001).\n * `forkUntilMessageKey` hiányában a szerver változatlan copy-t csinál (az összes üzenettel).\n */\n copySession(params: {\n sessionId: string;\n name?: string;\n forkUntilMessageKey?: string;\n }): Promise<{ session: CCAP_SessionListItem_Response }> {\n const body: Record<string, unknown> = {};\n if (params.name) {\n body.name = params.name;\n }\n if (params.forkUntilMessageKey) {\n body.forkUntilMessageKey = params.forkUntilMessageKey;\n }\n const httpParams: HttpParams = this.withCcapId(new HttpParams());\n return firstValueFrom(\n this.http.post<{ session: CCAP_SessionListItem_Response }>(\n `${this.baseUrl}/${params.sessionId}/copy`,\n body,\n { params: httpParams },\n ),\n );\n }\n\n /**\n * Futó execution leállítása (stop gomb).\n */\n stopExecution(sessionId: string): Promise<{ success: boolean }> {\n const httpParams: HttpParams = this.withCcapId(new HttpParams());\n return firstValueFrom(\n this.http.post<{ success: boolean }>(\n `${this.baseUrl}/${sessionId}/stop-execution`,\n {},\n { params: httpParams },\n ),\n );\n }\n\n /**\n * LLM debug trace bejegyzések egy session + run kombinációhoz (Info panel).\n */\n getLlmDebugTrace(params: {\n sessionId: string;\n runId: string;\n }): Promise<{ entries: AC_LlmDebugTraceEntry_Response[] }> {\n let httpParams: HttpParams = this.withCcapId(new HttpParams());\n httpParams = httpParams.set('runId', params.runId);\n return firstValueFrom(\n this.http.get<{ entries: AC_LlmDebugTraceEntry_Response[] }>(\n `${this.baseUrl}/${params.sessionId}/llm-debug-trace`,\n { params: httpParams },\n ),\n );\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["SocketUrl_Util", "computeSocketUrlFromStatus", "_data", "origin", "DisplayString_Util", "toDisplayString", "value", "o", "message", "trim", "length", "error", "detail", "s", "String", "import_fsm_dynamo", "Ses_Conversation_ApiService", "baseUrl", "environment", "api", "http", "inject", "HttpClient", "getMessages", "params", "firstValueFrom", "get", "sessionId", "viewMode", "getMessagesChunked", "httpParams", "beforeIndex", "String", "limit", "latest", "archiveScope", "sendMessage", "post", "content", "imageAttachments", "factory", "\u0275fac", "providedIn", "Session_ApiService", "baseUrl", "environment", "api", "http", "inject", "HttpClient", "peiContext_DS", "ExS_InstanceContext_DataService", "currentCcapId", "activeCcapId_$", "withCcapId", "params", "ccapId", "set", "listSessions", "httpParams", "HttpParams", "firstValueFrom", "get", "listArchivedSessions", "createSession", "body", "trimmedName", "name", "undefined", "trim", "length", "post", "getSession", "sessionId", "updateSession", "patch", "updates", "getSessionInfo", "copySession", "forkUntilMessageKey", "stopExecution", "getLlmDebugTrace", "runId", "factory", "\u0275fac", "providedIn", "SOCKET_EVENT_ANSWER", "SOCKET_EVENT_NOTIFY_USER", "SOCKET_EVENT_AGENT_EVENTS", "SOCKET_EVENT_CONTEXT_UPDATED", "SOCKET_EVENT_MONITORING_EVENT", "SOCKET_EVENT_USER_INTERACTION_REQUEST", "SOCKET_EVENT_USER_INTERACTION_RESOLVED", "NTF_TOOL_ID", "NTF_PHASE_SENT", "NTF_PHASE_WAITING", "Session_DataService", "sessionDetailBySessionId", "Map", "sessionInfoBySessionId", "activeSessionId_$", "signal", "requestSidebarCloseOnMobileBump_$", "sessions_$", "sessionsLoadError_$", "sessionsLoading_$", "archivedSessions_$", "archivedSessionsLoading_$", "messages_$", "messagesLoading_$", "messagesLoadError_$", "chunkState_$", "total", "hasMore", "nextBeforeIndex", "isLoadingOlder", "archivedTotal", "agentEvents_$", "activeRunExecutionMode_$", "contextUpdated_$", "monitoringEvent_$", "monitoringEvent_S", "Subject", "pendingInteraction_$", "pendingNotification_$", "sessionDetailMap_$", "sessionDetailLoading_$", "sessionInfoMap_$", "sessionInfoLoading_$", "sessionInfoLoadError_$", "llmDebugTraceEntries_$", "llmDebugTraceLoading_$", "llmDebugTraceLoadError_$", "eventSubscription", "connectedEffectRef", "session_AS", "inject", "Session_ApiService", "conversation_AS", "Ses_Conversation_ApiService", "serverStatus_AS", "SSt_Server_ApiService", "socket_CS", "CCAP_Socket_ControlService", "connected_$", "socketStatus_$", "status_$", "lastSocketError_$", "lastError_$", "connectAttemptCount_$", "diagnoseConnection", "constructor", "event$", "subscribe", "envelope", "handleSocketEvent", "effect", "getActiveSessionId", "emit", "sessionId", "payload", "activeId", "channelId", "undefined", "sessionIdFromPayload", "isForActive", "event", "content", "timestamp", "Date", "toISOString", "runId", "base", "role", "withRun", "__spreadProps", "__spreadValues", "stamped", "ensureClientListKey", "set", "DyFM_Log", "info", "substring", "eventData", "applyAgentEventRunExecutionModeLatch", "toolId", "eventPhase", "phase", "notificationTitle", "notificationType", "notificationPriority", "toolErrorContent", "toolError", "chId", "isForThisSession", "toolErrorStr", "DisplayString_Util", "toDisplayString", "trim", "length", "sid", "contextState", "ev", "monitoringPayload", "next", "resolvedId", "interactionId", "loadSessions", "__async", "response", "listSessions", "sessions", "error", "DyFM_Error", "logSimple", "createSession", "params", "session", "copySession", "forkSession", "name", "forkUntilMessageKey", "loadArchivedSessions", "listArchivedSessions", "setActiveSession", "clearMessages", "reconnectSocket", "status", "getStatus", "origin", "window", "location", "newSocketUrl", "SocketUrl_Util", "computeSocketUrlFromStatus", "httpPort", "socketPort", "currentSocketUrl", "environment", "socketUrl", "reload", "reconnect", "stopExecution", "success", "err", "sendMessageViaSocket", "imageAttachments", "trimmed", "newSession", "sent", "hasImages", "optimisticMsg", "optimisticStamped", "serverMsg", "sendMessage", "message", "updatedMessages", "map", "msg", "clientListKey", "merged", "messageKey", "hasTtsAudio", "rolledBack", "filter", "Error", "sendMessageToSession", "sendInteractionResponse", "setMessages", "messages", "m", "fromTts", "globalThis", "crypto", "randomUUID", "setMessageTtsCached", "updated", "loadMessagesForView", "getMessages", "viewMode", "loadInitialChunk", "getMessagesChunked", "latest", "limit", "archiveScope", "loadOlderChunk", "state", "beforeIndex", "older", "loadSessionDetail", "getSession", "entry", "lastRun", "getCachedSessionDetail", "get", "loadSessionInfo", "getSessionInfo", "getCachedSessionInfo", "fetchLlmDebugTraceEntriesForRun", "rid", "getLlmDebugTrace", "entries", "loadLlmDebugTrace", "updateSession", "archived", "updates", "phaseRaw", "phaseStr", "AC_RunFlowPhase_Type", "analyzeResult", "modeRaw", "runExecutionMode", "normalized", "normalizeRunExecutionModeSocketValue", "runFlowComplete", "runInitialization", "raw", "known", "AC_RunExecutionMode_Type", "instant", "agenticAny", "ask", "plan", "v", "ngOnDestroy", "complete", "unsubscribe", "destroy", "factory", "\u0275fac", "providedIn"]
|
|
7
|
+
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{b as S}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{b as S}from"./chunk-ELA6J2TW.js";import{C as o,aa as l,hb as s,k as a,y as c}from"./chunk-TBMJSIBB.js";var n="pei:selectedCcapId",$=(()=>{class i{instanceRegistry_DS=o(S);selectedCcapId_$=l("");activeCcapId_$=s(()=>{let e=this.selectedCcapId_$();return e||(this.instanceRegistry_DS.current_$()?.instanceKey??"")});isLocalSelected_$=s(()=>{let e=this.instanceRegistry_DS.current_$()?.instanceKey??"",t=this.activeCcapId_$();return!t||!e||t===e});instanceList_$=s(()=>this.instanceRegistry_DS.list_$());localInstanceKey_$=s(()=>this.instanceRegistry_DS.current_$()?.instanceKey??"");initializePromise=null;ensureInitialized(){return this.initializePromise||(this.initializePromise=this.initialize()),this.initializePromise}initialize(){return a(this,null,function*(){!this.instanceRegistry_DS.current_$()&&!this.instanceRegistry_DS.currentLoading_$()&&(yield this.instanceRegistry_DS.loadCurrent()),!this.instanceRegistry_DS.list_$().length&&!this.instanceRegistry_DS.listLoading_$()&&(yield this.instanceRegistry_DS.loadList()),this.restoreFromSessionStorage(),this.validateRestoredSelection()})}selectInstance(e){this.selectedCcapId_$.set(e),this.persistToSessionStorage(e)}restoreFromSessionStorage(){try{let e=sessionStorage.getItem(n);e&&this.selectedCcapId_$.set(e)}catch{}}validateRestoredSelection(){let e=this.selectedCcapId_$();if(!e)return;let t=this.instanceRegistry_DS.current_$()?.instanceKey??"";if(t&&e===t)return;let r=this.instanceRegistry_DS.list_$();r.length&&r.some(_=>_.instanceKey===e)||t&&(this.selectedCcapId_$.set(""),this.clearSessionStorage())}persistToSessionStorage(e){try{sessionStorage.setItem(n,e)}catch{}}clearSessionStorage(){try{sessionStorage.removeItem(n)}catch{}}static \u0275fac=function(t){return new(t||i)};static \u0275prov=c({token:i,factory:i.\u0275fac,providedIn:"root"})}return i})();export{$ as a};
|
|
2
|
+
//# sourceMappingURL=chunk-66F6YPRF.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{k as F}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{k as F}from"./chunk-DAHSKF6G.js";import{D as h,Fa as _,Ga as C,Ha as T,J as x,K as u,T as E,Ta as L,U as l,Ua as k,Z as a,da as c,ga as S,la as d,ma as f,oa as v,pa as g,qa as o,ra as r,sa as p,ua as y,ub as R,va as b,wa as i,xa as M,ya as w}from"./chunk-TBMJSIBB.js";var I=["*","*"],D=()=>[];function j(t,n){if(t&1){let e=y();o(0,"div",2)(1,"button",3),b("click",function(){x(e);let m=i(3);return u(m.handleRetry())}),_(2," \xDAjrapr\xF3b\xE1l\xE1s "),r()()}}function V(t,n){if(t&1&&(o(0,"div"),p(1,"app-ccap-error-display",1),c(2,j,3,0,"div",2),r()),t&2){let e=i(2);a(),S("error",e.error())("sourceLabelOverride",e.errorSourceLabel()),a(),d(e.showRetry()?2:-1)}}function A(t,n){t&1&&(o(0,"div",6),p(1,"div",9)(2,"div",10),r())}function P(t,n){if(t&1&&(o(0,"div",4),v(1,A,3,0,"div",6,f),o(3,"div",7),p(4,"span",8),_(5),r()()),t&2){let e=i(3);a(),g(k(1,D).constructor(e.skeletonRows())),a(4),T(" ",e.loadingMessage()," ")}}function B(t,n){if(t&1&&(o(0,"p",5),_(1),r()),t&2){let e=i(3);a(),C(e.loadingMessage())}}function O(t,n){if(t&1&&c(0,P,6,2,"div",4)(1,B,2,1,"p",5),t&2){let e=i(2);d(e.showSkeleton()?0:1)}}function N(t,n){if(t&1&&(o(0,"p",0),_(1),r()),t&2){let e=i(2);a(),C(e.emptyMessage())}}function q(t,n){t&1&&w(0)}function z(t,n){if(t&1&&c(0,V,3,3,"div")(1,O,2,1)(2,N,2,1,"p",0)(3,q,1,0),t&2){let e=i();d(e.error()?0:e.isLoading()?1:e.isEmpty()?2:3)}}function G(t,n){t&1&&(o(0,"div",6),p(1,"div",9)(2,"div",10),r())}function H(t,n){if(t&1&&(o(0,"div",4),v(1,G,3,0,"div",6,f),o(3,"div",7),p(4,"span",8),_(5),r()()),t&2){let e=i(3);a(),g(k(1,D).constructor(e.skeletonRows())),a(4),T(" ",e.loadingMessage()," ")}}function J(t,n){if(t&1&&(o(0,"p",5),_(1),r()),t&2){let e=i(3);a(),C(e.loadingMessage())}}function K(t,n){if(t&1&&c(0,H,6,2,"div",4)(1,J,2,1,"p",5),t&2){let e=i(2);d(e.showSkeleton()?0:1)}}function Q(t,n){if(t&1){let e=y();o(0,"div",2)(1,"button",3),b("click",function(){x(e);let m=i(3);return u(m.handleRetry())}),_(2," \xDAjrapr\xF3b\xE1l\xE1s "),r()()}}function U(t,n){if(t&1&&(o(0,"div"),p(1,"app-ccap-error-display",1),c(2,Q,3,0,"div",2),r()),t&2){let e=i(2);a(),S("error",e.error())("sourceLabelOverride",e.errorSourceLabel()),a(),d(e.showRetry()?2:-1)}}function W(t,n){if(t&1&&(o(0,"p",0),_(1),r()),t&2){let e=i(2);a(),C(e.emptyMessage())}}function X(t,n){t&1&&w(0,1)}function Y(t,n){if(t&1&&c(0,K,2,1)(1,U,3,3,"div")(2,W,2,1,"p",0)(3,X,1,0),t&2){let e=i();d(e.isLoading()?0:e.error()?1:e.isEmpty()?2:3)}}var ot=(()=>{class t{isLoading=l(!1);error=l(null);isEmpty=l(!1);errorSourceLabel=l("");emptyMessage=l("Nincs megjelen\xEDthet\u0151 elem.");loadingMessage=l("Bet\xF6lt\xE9s\u2026");skeletonRows=l(2);showSkeleton=l(!1);showRetry=l(!0);errorTakesPrecedence=l(!1);retry=E();handleRetry(){this.retry.emit()}static \u0275fac=function(s){return new(s||t)};static \u0275cmp=h({type:t,selectors:[["app-s-content-state"]],hostAttrs:[1,"block"],inputs:{isLoading:[1,"isLoading"],error:[1,"error"],isEmpty:[1,"isEmpty"],errorSourceLabel:[1,"errorSourceLabel"],emptyMessage:[1,"emptyMessage"],loadingMessage:[1,"loadingMessage"],skeletonRows:[1,"skeletonRows"],showSkeleton:[1,"showSkeleton"],showRetry:[1,"showRetry"],errorTakesPrecedence:[1,"errorTakesPrecedence"]},outputs:{retry:"retry"},standalone:!0,features:[L],ngContentSelectors:I,decls:2,vars:1,consts:[[1,"text-neutral-500","py-4"],[1,"mb-3","block",3,"error","sourceLabelOverride"],[1,"text-center"],["type","button",1,"mt-1","px-3","py-1.5","text-sm","border","border-neonCyan","rounded-md","bg-transparent","text-neutral-200","hover:bg-neutral-800","hover:shadow-neon-glow-cyan","transition-colors",3,"click"],[1,"flex","flex-col","gap-2","py-4"],[1,"text-neutral-400"],[1,"px-4","py-3","border","border-neonDefault","rounded-lg","animate-pulse"],[1,"flex","items-center","gap-2","text-neutral-500","text-sm"],[1,"inline-block","w-2","h-2","rounded-full","bg-ccapAccent","animate-pulse"],[1,"h-4","w-3/4","bg-neutral-600","rounded","mb-2"],[1,"h-3","w-1/2","bg-neutral-700","rounded"]],template:function(s,m){s&1&&(M(I),c(0,z,4,1)(1,Y,4,1)),s&2&&d(m.errorTakesPrecedence()?0:1)},dependencies:[R,F],encapsulation:2})}return t})();export{ot as a};
|
|
2
|
+
//# sourceMappingURL=chunk-6ALMEEKI.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as p}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{a as p}from"./chunk-NJZDOSTR.js";import{p as m}from"./chunk-KNX6PXMA.js";import{G as i,h as s}from"./chunk-TBMJSIBB.js";var l=(()=>{class r{transform(n){return p.getDurationBand(n)}static \u0275fac=function(t){return new(t||r)};static \u0275pipe=i({name:"ccapDurationBand",type:r,pure:!0,standalone:!0})}return r})();var f=s(m()),a=f.second,u=60*a,c=60*u,o=class{static formatGenerationTimeMs(e){if(e==null||typeof e!="number"||Number.isNaN(e))return"\u2013";if(e<a)return`${Math.round(e)} ms`;if(e<u){let t=e/a;return t>=10||t%1===0?`${Math.round(t)} s`:`${t.toFixed(1)} s`}if(e<c){let t=e/u;return t>=10||t%1===0?`${Math.round(t)} min`:`${t.toFixed(1)} min`}let n=e/c;return n>=10||n%1===0?`${Math.round(n)} h`:`${n.toFixed(1)} h`}};var $=(()=>{class r{transform(n){return o.formatGenerationTimeMs(n)}static \u0275fac=function(t){return new(t||r)};static \u0275pipe=i({name:"ccapGenerationTime",type:r,pure:!0,standalone:!0})}return r})();export{l as a,$ as b};
|
|
2
|
+
//# sourceMappingURL=chunk-6SYXRJL2.js.map
|