@futdevpro/ccap 1.1.3371 → 1.1.3441
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-TPKOBI3N.js → agent-instances.module-4ADMPXCV.js} +2 -2
- package/client-dist/{ca.module-I5N6QWSU.js → ca.module-RVGC3WQC.js} +2 -2
- package/client-dist/{cc-usage-dashboard.component-7SPVADUQ.js → cc-usage-dashboard.component-OQS2BC4L.js} +2 -2
- package/client-dist/{cc.module-7IL3QO5Q.js → cc.module-SPB35JNX.js} +2 -2
- package/client-dist/{chunk-77YTUUCR.js → chunk-2ATSF4KC.js} +2 -2
- package/client-dist/{chunk-RYD462IO.js → chunk-3HJWN4W6.js} +2 -2
- package/client-dist/{chunk-GG2WP2KM.js → chunk-4EV32FFZ.js} +2 -2
- package/client-dist/{chunk-UD4PV7CD.js → chunk-4H3E32UH.js} +2 -2
- package/client-dist/{chunk-BH3GMEZZ.js → chunk-4LCJ4GNK.js} +2 -2
- package/client-dist/{chunk-KX2KGHQZ.js → chunk-5NW5UGVZ.js} +2 -2
- package/client-dist/{chunk-BJ4I73WC.js → chunk-AM5URSKV.js} +2 -2
- package/client-dist/{chunk-U3Y5GO6O.js → chunk-AMROWQBM.js} +2 -2
- package/client-dist/{chunk-LCKABD2M.js → chunk-AR6EOT63.js} +2 -2
- package/client-dist/{chunk-U64N3LCA.js → chunk-B25EGDHU.js} +2 -2
- package/client-dist/{chunk-44TWBJUK.js → chunk-BQTJHETS.js} +2 -2
- package/client-dist/{chunk-657E66YR.js → chunk-COOWEMEW.js} +2 -2
- package/client-dist/{chunk-E6WOJOGT.js → chunk-E3JXFFHE.js} +2 -2
- package/client-dist/{chunk-LIGODF4I.js → chunk-ESIGVRCK.js} +2 -2
- package/client-dist/{chunk-CAMM4S7P.js → chunk-EVMDNGBK.js} +2 -2
- package/client-dist/{chunk-26YUXPZI.js → chunk-F6VMAVI5.js} +2 -2
- package/client-dist/chunk-FRVRMJQF.js +2 -0
- package/client-dist/chunk-FRVRMJQF.js.map +7 -0
- package/client-dist/{chunk-W7HIS2QA.js → chunk-GBOES7QW.js} +2 -2
- package/client-dist/{chunk-DXF2FJLD.js → chunk-GTERKRTR.js} +2 -2
- package/client-dist/{chunk-SK3XGSYF.js → chunk-HD4CODAD.js} +2 -2
- package/client-dist/{chunk-L2XJGYW4.js → chunk-I3FSMGMK.js} +2 -2
- package/client-dist/{chunk-5YDHEFSD.js → chunk-IFYHOOVA.js} +2 -2
- package/client-dist/{chunk-C4FOSX27.js → chunk-IUAZJ3PT.js} +2 -2
- package/client-dist/{chunk-XFXMWTQS.js → chunk-IVLMVAVJ.js} +2 -2
- package/client-dist/{chunk-3G2ZGV66.js → chunk-KBMXCICX.js} +2 -2
- package/client-dist/{chunk-5RLDT3NY.js → chunk-KIKSSJKL.js} +2 -2
- package/client-dist/{chunk-OLLHHMTV.js → chunk-LPNQ5PRN.js} +2 -2
- package/client-dist/{chunk-OKUYYDGV.js → chunk-MO37SUK2.js} +2 -2
- package/client-dist/{chunk-OCNDLQG5.js → chunk-MYVEHPA7.js} +2 -2
- package/client-dist/{chunk-PW5BAINL.js → chunk-N55GOFVU.js} +2 -2
- package/client-dist/{chunk-IHNAAEA2.js → chunk-NNUHTCXG.js} +2 -2
- package/client-dist/{chunk-7VY64KMU.js → chunk-OKTAADTQ.js} +2 -2
- package/client-dist/{chunk-4EOSKDXN.js → chunk-ONS7XQYD.js} +2 -2
- package/client-dist/{chunk-4JL2Q6FO.js → chunk-OYB7GU43.js} +2 -2
- package/client-dist/{chunk-A33MCHYC.js → chunk-PVSQ5ZEZ.js} +14 -14
- package/client-dist/{chunk-A33MCHYC.js.map → chunk-PVSQ5ZEZ.js.map} +3 -3
- package/client-dist/{chunk-TFB7ULAV.js → chunk-PZN2OI7U.js} +2 -2
- package/client-dist/{chunk-VRG74DKK.js → chunk-QUD3BEHN.js} +2 -2
- package/client-dist/{chunk-QQ2GRU2N.js → chunk-QUEYZI42.js} +2 -2
- package/client-dist/{chunk-XWYXBY7S.js → chunk-R2IBKJ4K.js} +2 -2
- package/client-dist/{chunk-4FK2D2PX.js → chunk-RAHCHCWR.js} +2 -2
- package/client-dist/{chunk-J5INQQ5M.js → chunk-RCCUSGIN.js} +2 -2
- package/client-dist/{chunk-CU5YQ2M4.js → chunk-RL5LPTPO.js} +2 -2
- package/client-dist/{chunk-7CMPZXAO.js → chunk-SDVXPGB7.js} +2 -2
- package/client-dist/{chunk-UVVGFHUG.js → chunk-TNLHQRL7.js} +2 -2
- package/client-dist/{chunk-25KTNALK.js → chunk-TWK7BOB7.js} +2 -2
- package/client-dist/{chunk-OS5KCUZD.js → chunk-U62YECNK.js} +2 -2
- package/client-dist/{chunk-VOFDBT5T.js → chunk-UOC6UYZT.js} +2 -2
- package/client-dist/{chunk-C2BQQRVH.js → chunk-VDQROW6J.js} +2 -2
- package/client-dist/{chunk-UM7AS2IW.js → chunk-VMXIXZV2.js} +2 -2
- package/client-dist/chunk-VQ4GBHH7.js +2 -0
- package/client-dist/chunk-VQ4GBHH7.js.map +7 -0
- package/client-dist/{chunk-6BYNIFJY.js → chunk-WRI37SX4.js} +2 -2
- package/client-dist/{chunk-LMK3IOKN.js → chunk-XLSL262Q.js} +2 -2
- package/client-dist/{chunk-RUSAMFGS.js → chunk-Y6V4NGLU.js} +2 -2
- package/client-dist/{chunk-RUSAMFGS.js.map → chunk-Y6V4NGLU.js.map} +1 -1
- package/client-dist/{chunk-PMJP2N4K.js → chunk-YN4H6MW2.js} +2 -2
- package/client-dist/{chunk-EDMLVG72.js → chunk-Z5FUR5ZW.js} +2 -2
- package/client-dist/{chunk-4PBNHSRW.js → chunk-ZCHMBEHT.js} +2 -2
- package/client-dist/{chunk-L42Z7YNK.js → chunk-ZPJ6KYMA.js} +2 -2
- package/client-dist/{consultant.module-HHTHUWRL.js → consultant.module-UWXLFLDS.js} +2 -2
- package/client-dist/{crd.module-ER6AHSX5.js → crd.module-2I2BDC3A.js} +2 -2
- package/client-dist/{dashboard.module-TSNGGBCI.js → dashboard.module-X2A6LOTA.js} +2 -2
- package/client-dist/{do.module-NMZD5VSM.js → do.module-CJWEKZ4L.js} +2 -2
- package/client-dist/{document-library.module-GHDNXP3T.js → document-library.module-WJSFZPA7.js} +2 -2
- package/client-dist/{embedding-eval.module-XPXBOIP5.js → embedding-eval.module-FOALIAQW.js} +2 -2
- package/client-dist/{embedding-registry.module-45TQGZI2.js → embedding-registry.module-SS646R4H.js} +2 -2
- package/client-dist/err.module-SR4ZAOQH.js +6 -0
- package/client-dist/err.module-SR4ZAOQH.js.map +7 -0
- package/client-dist/{feedback.module-TLKZ4B4N.js → feedback.module-T3MZQKXV.js} +2 -2
- package/client-dist/{host-runtime-mcp.module-HVJZN5R5.js → host-runtime-mcp.module-FBZZGQGD.js} +2 -2
- package/client-dist/index.html +2 -2
- package/client-dist/{live-dev-pipeline.module-5PE4ZFFW.js → live-dev-pipeline.module-OKQYFSJL.js} +2 -2
- package/client-dist/{logs.module-335EXKCD.js → logs.module-SHHOD5XW.js} +2 -2
- package/client-dist/{main-FRD6VXVH.js → main-L3WW2VTB.js} +3 -3
- package/client-dist/{master-control-remote-poc.module-ORHRUCZH.js → master-control-remote-poc.module-ITXHYU5K.js} +2 -2
- package/client-dist/{mobile-app.module-BYYNVKQR.js → mobile-app.module-Q3W3PU4O.js} +2 -2
- package/client-dist/{model-registry.module-KIHIJ2Z6.js → model-registry.module-DGN55LTQ.js} +2 -2
- package/client-dist/{oc.module-DAGIRW3Z.js → oc.module-DYSATWML.js} +2 -2
- package/client-dist/orc.module-NQO6OLPK.js +2 -0
- package/client-dist/orc.module-NQO6OLPK.js.map +7 -0
- package/client-dist/{project-management.module-IJNPSUQZ.js → project-management.module-T7NBKKSR.js} +2 -2
- package/client-dist/project-source-routed.module-YO54LEGN.js +2 -0
- package/client-dist/{scheduler.module-S3IKZCLL.js → scheduler.module-4CMBOTGZ.js} +2 -2
- package/client-dist/{session.module-FZC22UUN.js → session.module-V4SRPQRZ.js} +9 -9
- package/client-dist/{session.module-FZC22UUN.js.map → session.module-V4SRPQRZ.js.map} +3 -3
- package/client-dist/{set.module-Y2RHKW7A.js → set.module-32SVEWTG.js} +2 -2
- package/client-dist/{setup.module-VTI5EZ3Q.js → setup.module-5T6MCMR4.js} +2 -2
- package/client-dist/styles-CTUT42AQ.css +2 -0
- package/client-dist/{styles-MX7ZZMTH.css.map → styles-CTUT42AQ.css.map} +1 -1
- package/client-dist/{terminals.module-KHEDY6QN.js → terminals.module-AQO2TVO2.js} +2 -2
- package/client-dist/{voice-notes-poc.module-EMDLJJIT.js → voice-notes-poc.module-EI2HY7YJ.js} +2 -2
- package/client-dist/{wfs.module-LUTFNQG5.js → wfs.module-AHRZE5WB.js} +2 -2
- package/package.json +1 -1
- package/server/build/src/_modules/ccap-agent/_modules/agent-core/_modules/run/_services/control-services/run-flow.control-service.d.ts.map +1 -1
- package/server/build/src/_modules/ccap-agent/_modules/agent-core/_modules/run/_services/control-services/run-flow.control-service.js +8 -1
- package/server/build/src/_modules/ccap-agent/_modules/agent-core/_modules/run/_services/control-services/run-flow.control-service.js.map +1 -1
- package/server/build/src/_modules/ccap-agent/_modules/integrations/_modules/voice/_collections/utils/voc-mp3-id3-strip.util.d.ts +47 -0
- package/server/build/src/_modules/ccap-agent/_modules/integrations/_modules/voice/_collections/utils/voc-mp3-id3-strip.util.d.ts.map +1 -0
- package/server/build/src/_modules/ccap-agent/_modules/integrations/_modules/voice/_collections/utils/voc-mp3-id3-strip.util.js +100 -0
- package/server/build/src/_modules/ccap-agent/_modules/integrations/_modules/voice/_collections/utils/voc-mp3-id3-strip.util.js.map +1 -0
- package/server/build/src/_modules/ccap-agent/_modules/integrations/_modules/voice/_collections/utils/voc-mp3-id3-strip.util.spec.d.ts +2 -0
- package/server/build/src/_modules/ccap-agent/_modules/integrations/_modules/voice/_collections/utils/voc-mp3-id3-strip.util.spec.d.ts.map +1 -0
- package/server/build/src/_modules/ccap-agent/_modules/integrations/_modules/voice/_collections/utils/voc-mp3-id3-strip.util.spec.js +162 -0
- package/server/build/src/_modules/ccap-agent/_modules/integrations/_modules/voice/_collections/utils/voc-mp3-id3-strip.util.spec.js.map +1 -0
- package/server/build/src/_modules/ccap-agent/_modules/integrations/_modules/voice/_services/control-services/tts/voc-tts.control-service.d.ts.map +1 -1
- package/server/build/src/_modules/ccap-agent/_modules/integrations/_modules/voice/_services/control-services/tts/voc-tts.control-service.js +22 -4
- package/server/build/src/_modules/ccap-agent/_modules/integrations/_modules/voice/_services/control-services/tts/voc-tts.control-service.js.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/cc-stream-parser.util.d.ts +17 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/cc-stream-parser.util.d.ts.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/cc-stream-parser.util.js +65 -5
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/cc-stream-parser.util.js.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/cc-stream-parser.util.spec.d.ts +9 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/cc-stream-parser.util.spec.d.ts.map +1 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/cc-stream-parser.util.spec.js +213 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/cc-stream-parser.util.spec.js.map +1 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-adapter.control-service.d.ts.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-adapter.control-service.js +8 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-adapter.control-service.js.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-adapter.interface.d.ts +10 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-adapter.interface.d.ts.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-manager.control-service.d.ts +39 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-manager.control-service.d.ts.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-manager.control-service.js +88 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-manager.control-service.js.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/status/cc-status-transition.control-service.d.ts +13 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/status/cc-status-transition.control-service.d.ts.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/status/cc-status-transition.control-service.js +39 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/status/cc-status-transition.control-service.js.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/terminal/cc-adapter-terminal.control-service.d.ts.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/terminal/cc-adapter-terminal.control-service.js +9 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/terminal/cc-adapter-terminal.control-service.js.map +1 -1
- package/server/build/src/_modules/notification/_collections/utils/ntf-system-event.util.d.ts +10 -0
- package/server/build/src/_modules/notification/_collections/utils/ntf-system-event.util.d.ts.map +1 -1
- package/server/build/src/_modules/notification/_collections/utils/ntf-system-event.util.js +18 -0
- package/server/build/src/_modules/notification/_collections/utils/ntf-system-event.util.js.map +1 -1
- package/server/build/src/_modules/notification/_collections/utils/ntf-system-event.util.spec.js +32 -3
- package/server/build/src/_modules/notification/_collections/utils/ntf-system-event.util.spec.js.map +1 -1
- package/server/build/src/_modules/peer-instance/_services/pei-event-relay.control-service.spec.d.ts +15 -0
- package/server/build/src/_modules/peer-instance/_services/pei-event-relay.control-service.spec.d.ts.map +1 -0
- package/server/build/src/_modules/peer-instance/_services/pei-event-relay.control-service.spec.js +122 -0
- package/server/build/src/_modules/peer-instance/_services/pei-event-relay.control-service.spec.js.map +1 -0
- package/client-dist/chunk-3AG5X2MY.js +0 -2
- package/client-dist/chunk-3AG5X2MY.js.map +0 -7
- package/client-dist/chunk-CDNAFC73.js +0 -2
- package/client-dist/chunk-CDNAFC73.js.map +0 -7
- package/client-dist/err.module-GCKYDYCK.js +0 -6
- package/client-dist/err.module-GCKYDYCK.js.map +0 -7
- package/client-dist/orc.module-KZELL6XR.js +0 -2
- package/client-dist/orc.module-KZELL6XR.js.map +0 -7
- package/client-dist/project-source-routed.module-DP3RD454.js +0 -2
- package/client-dist/styles-MX7ZZMTH.css +0 -2
- /package/client-dist/{agent-instances.module-TPKOBI3N.js.map → agent-instances.module-4ADMPXCV.js.map} +0 -0
- /package/client-dist/{ca.module-I5N6QWSU.js.map → ca.module-RVGC3WQC.js.map} +0 -0
- /package/client-dist/{cc-usage-dashboard.component-7SPVADUQ.js.map → cc-usage-dashboard.component-OQS2BC4L.js.map} +0 -0
- /package/client-dist/{cc.module-7IL3QO5Q.js.map → cc.module-SPB35JNX.js.map} +0 -0
- /package/client-dist/{chunk-77YTUUCR.js.map → chunk-2ATSF4KC.js.map} +0 -0
- /package/client-dist/{chunk-RYD462IO.js.map → chunk-3HJWN4W6.js.map} +0 -0
- /package/client-dist/{chunk-GG2WP2KM.js.map → chunk-4EV32FFZ.js.map} +0 -0
- /package/client-dist/{chunk-UD4PV7CD.js.map → chunk-4H3E32UH.js.map} +0 -0
- /package/client-dist/{chunk-BH3GMEZZ.js.map → chunk-4LCJ4GNK.js.map} +0 -0
- /package/client-dist/{chunk-KX2KGHQZ.js.map → chunk-5NW5UGVZ.js.map} +0 -0
- /package/client-dist/{chunk-BJ4I73WC.js.map → chunk-AM5URSKV.js.map} +0 -0
- /package/client-dist/{chunk-U3Y5GO6O.js.map → chunk-AMROWQBM.js.map} +0 -0
- /package/client-dist/{chunk-LCKABD2M.js.map → chunk-AR6EOT63.js.map} +0 -0
- /package/client-dist/{chunk-U64N3LCA.js.map → chunk-B25EGDHU.js.map} +0 -0
- /package/client-dist/{chunk-44TWBJUK.js.map → chunk-BQTJHETS.js.map} +0 -0
- /package/client-dist/{chunk-657E66YR.js.map → chunk-COOWEMEW.js.map} +0 -0
- /package/client-dist/{chunk-E6WOJOGT.js.map → chunk-E3JXFFHE.js.map} +0 -0
- /package/client-dist/{chunk-LIGODF4I.js.map → chunk-ESIGVRCK.js.map} +0 -0
- /package/client-dist/{chunk-CAMM4S7P.js.map → chunk-EVMDNGBK.js.map} +0 -0
- /package/client-dist/{chunk-26YUXPZI.js.map → chunk-F6VMAVI5.js.map} +0 -0
- /package/client-dist/{chunk-W7HIS2QA.js.map → chunk-GBOES7QW.js.map} +0 -0
- /package/client-dist/{chunk-DXF2FJLD.js.map → chunk-GTERKRTR.js.map} +0 -0
- /package/client-dist/{chunk-SK3XGSYF.js.map → chunk-HD4CODAD.js.map} +0 -0
- /package/client-dist/{chunk-L2XJGYW4.js.map → chunk-I3FSMGMK.js.map} +0 -0
- /package/client-dist/{chunk-5YDHEFSD.js.map → chunk-IFYHOOVA.js.map} +0 -0
- /package/client-dist/{chunk-C4FOSX27.js.map → chunk-IUAZJ3PT.js.map} +0 -0
- /package/client-dist/{chunk-XFXMWTQS.js.map → chunk-IVLMVAVJ.js.map} +0 -0
- /package/client-dist/{chunk-3G2ZGV66.js.map → chunk-KBMXCICX.js.map} +0 -0
- /package/client-dist/{chunk-5RLDT3NY.js.map → chunk-KIKSSJKL.js.map} +0 -0
- /package/client-dist/{chunk-OLLHHMTV.js.map → chunk-LPNQ5PRN.js.map} +0 -0
- /package/client-dist/{chunk-OKUYYDGV.js.map → chunk-MO37SUK2.js.map} +0 -0
- /package/client-dist/{chunk-OCNDLQG5.js.map → chunk-MYVEHPA7.js.map} +0 -0
- /package/client-dist/{chunk-PW5BAINL.js.map → chunk-N55GOFVU.js.map} +0 -0
- /package/client-dist/{chunk-IHNAAEA2.js.map → chunk-NNUHTCXG.js.map} +0 -0
- /package/client-dist/{chunk-7VY64KMU.js.map → chunk-OKTAADTQ.js.map} +0 -0
- /package/client-dist/{chunk-4EOSKDXN.js.map → chunk-ONS7XQYD.js.map} +0 -0
- /package/client-dist/{chunk-4JL2Q6FO.js.map → chunk-OYB7GU43.js.map} +0 -0
- /package/client-dist/{chunk-TFB7ULAV.js.map → chunk-PZN2OI7U.js.map} +0 -0
- /package/client-dist/{chunk-VRG74DKK.js.map → chunk-QUD3BEHN.js.map} +0 -0
- /package/client-dist/{chunk-QQ2GRU2N.js.map → chunk-QUEYZI42.js.map} +0 -0
- /package/client-dist/{chunk-XWYXBY7S.js.map → chunk-R2IBKJ4K.js.map} +0 -0
- /package/client-dist/{chunk-4FK2D2PX.js.map → chunk-RAHCHCWR.js.map} +0 -0
- /package/client-dist/{chunk-J5INQQ5M.js.map → chunk-RCCUSGIN.js.map} +0 -0
- /package/client-dist/{chunk-CU5YQ2M4.js.map → chunk-RL5LPTPO.js.map} +0 -0
- /package/client-dist/{chunk-7CMPZXAO.js.map → chunk-SDVXPGB7.js.map} +0 -0
- /package/client-dist/{chunk-UVVGFHUG.js.map → chunk-TNLHQRL7.js.map} +0 -0
- /package/client-dist/{chunk-25KTNALK.js.map → chunk-TWK7BOB7.js.map} +0 -0
- /package/client-dist/{chunk-OS5KCUZD.js.map → chunk-U62YECNK.js.map} +0 -0
- /package/client-dist/{chunk-VOFDBT5T.js.map → chunk-UOC6UYZT.js.map} +0 -0
- /package/client-dist/{chunk-C2BQQRVH.js.map → chunk-VDQROW6J.js.map} +0 -0
- /package/client-dist/{chunk-UM7AS2IW.js.map → chunk-VMXIXZV2.js.map} +0 -0
- /package/client-dist/{chunk-6BYNIFJY.js.map → chunk-WRI37SX4.js.map} +0 -0
- /package/client-dist/{chunk-LMK3IOKN.js.map → chunk-XLSL262Q.js.map} +0 -0
- /package/client-dist/{chunk-PMJP2N4K.js.map → chunk-YN4H6MW2.js.map} +0 -0
- /package/client-dist/{chunk-EDMLVG72.js.map → chunk-Z5FUR5ZW.js.map} +0 -0
- /package/client-dist/{chunk-4PBNHSRW.js.map → chunk-ZCHMBEHT.js.map} +0 -0
- /package/client-dist/{chunk-L42Z7YNK.js.map → chunk-ZPJ6KYMA.js.map} +0 -0
- /package/client-dist/{consultant.module-HHTHUWRL.js.map → consultant.module-UWXLFLDS.js.map} +0 -0
- /package/client-dist/{crd.module-ER6AHSX5.js.map → crd.module-2I2BDC3A.js.map} +0 -0
- /package/client-dist/{dashboard.module-TSNGGBCI.js.map → dashboard.module-X2A6LOTA.js.map} +0 -0
- /package/client-dist/{do.module-NMZD5VSM.js.map → do.module-CJWEKZ4L.js.map} +0 -0
- /package/client-dist/{document-library.module-GHDNXP3T.js.map → document-library.module-WJSFZPA7.js.map} +0 -0
- /package/client-dist/{embedding-eval.module-XPXBOIP5.js.map → embedding-eval.module-FOALIAQW.js.map} +0 -0
- /package/client-dist/{embedding-registry.module-45TQGZI2.js.map → embedding-registry.module-SS646R4H.js.map} +0 -0
- /package/client-dist/{feedback.module-TLKZ4B4N.js.map → feedback.module-T3MZQKXV.js.map} +0 -0
- /package/client-dist/{host-runtime-mcp.module-HVJZN5R5.js.map → host-runtime-mcp.module-FBZZGQGD.js.map} +0 -0
- /package/client-dist/{live-dev-pipeline.module-5PE4ZFFW.js.map → live-dev-pipeline.module-OKQYFSJL.js.map} +0 -0
- /package/client-dist/{logs.module-335EXKCD.js.map → logs.module-SHHOD5XW.js.map} +0 -0
- /package/client-dist/{main-FRD6VXVH.js.map → main-L3WW2VTB.js.map} +0 -0
- /package/client-dist/{master-control-remote-poc.module-ORHRUCZH.js.map → master-control-remote-poc.module-ITXHYU5K.js.map} +0 -0
- /package/client-dist/{mobile-app.module-BYYNVKQR.js.map → mobile-app.module-Q3W3PU4O.js.map} +0 -0
- /package/client-dist/{model-registry.module-KIHIJ2Z6.js.map → model-registry.module-DGN55LTQ.js.map} +0 -0
- /package/client-dist/{oc.module-DAGIRW3Z.js.map → oc.module-DYSATWML.js.map} +0 -0
- /package/client-dist/{project-management.module-IJNPSUQZ.js.map → project-management.module-T7NBKKSR.js.map} +0 -0
- /package/client-dist/{project-source-routed.module-DP3RD454.js.map → project-source-routed.module-YO54LEGN.js.map} +0 -0
- /package/client-dist/{scheduler.module-S3IKZCLL.js.map → scheduler.module-4CMBOTGZ.js.map} +0 -0
- /package/client-dist/{set.module-Y2RHKW7A.js.map → set.module-32SVEWTG.js.map} +0 -0
- /package/client-dist/{setup.module-VTI5EZ3Q.js.map → setup.module-5T6MCMR4.js.map} +0 -0
- /package/client-dist/{terminals.module-KHEDY6QN.js.map → terminals.module-AQO2TVO2.js.map} +0 -0
- /package/client-dist/{voice-notes-poc.module-EMDLJJIT.js.map → voice-notes-poc.module-EI2HY7YJ.js.map} +0 -0
- /package/client-dist/{wfs.module-LUTFNQG5.js.map → wfs.module-AHRZE5WB.js.map} +0 -0
package/server/build/src/_modules/peer-instance/_services/pei-event-relay.control-service.spec.js
ADDED
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* PEI_EventRelay_ControlService.relaySessionEvent unit-spec — REQ-CCI-MSG-UI-FEEDBACK-001
|
|
4
|
+
* Slice D (cycle 977) cross-instance relay smoke.
|
|
5
|
+
*
|
|
6
|
+
* A spec azt verifikálja, hogy a `runInitialization` phase event (Slice B-ben
|
|
7
|
+
* server-ről emit-elt `agent-events` payload) cross-instance esetben helyesen
|
|
8
|
+
* át-relay-elődik a peerSendCallback-en a source instance-re — a kliens (Slice C)
|
|
9
|
+
* azt a phase event-et használja a user-message `processingStatus: 'processing'`
|
|
10
|
+
* átállításhoz.
|
|
11
|
+
*
|
|
12
|
+
* Pattern: Object.create + cast a privát `subscriptions` Map-re (a singleton-t
|
|
13
|
+
* NEM init-eljük, a relay logikát közvetlenül teszteljük).
|
|
14
|
+
*/
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
const pei_event_relay_control_service_1 = require("./pei-event-relay.control-service");
|
|
17
|
+
describe('PEI_EventRelay_ControlService.relaySessionEvent (Slice D cycle 977)', () => {
|
|
18
|
+
/** Új instance + üres subscription Map + spy callback. */
|
|
19
|
+
function makeSvc(initialSubs = new Map()) {
|
|
20
|
+
const svc = Object.create(pei_event_relay_control_service_1.PEI_EventRelay_ControlService.prototype);
|
|
21
|
+
svc.subscriptions = initialSubs;
|
|
22
|
+
const callback = jasmine.createSpy('peerSendCallback');
|
|
23
|
+
svc.peerSendCallback = callback;
|
|
24
|
+
return { svc: svc, callback: callback };
|
|
25
|
+
}
|
|
26
|
+
it('| peerSendCallback null esetén no-op (csendben kilép, nem crash)', () => {
|
|
27
|
+
const svc = Object.create(pei_event_relay_control_service_1.PEI_EventRelay_ControlService.prototype);
|
|
28
|
+
svc.subscriptions = new Map();
|
|
29
|
+
svc.peerSendCallback = null;
|
|
30
|
+
expect(() => {
|
|
31
|
+
svc.relaySessionEvent({
|
|
32
|
+
ccapId: 'target',
|
|
33
|
+
sessionId: 's1',
|
|
34
|
+
event: 'agent-events',
|
|
35
|
+
data: { eventData: { phase: 'runInitialization', runId: 'r1' } },
|
|
36
|
+
});
|
|
37
|
+
}).not.toThrow();
|
|
38
|
+
});
|
|
39
|
+
it('| matching subscription esetén forward-ol a peerSendCallback-en `relay:` prefix-szel', () => {
|
|
40
|
+
const subs = new Map();
|
|
41
|
+
subs.set('task-1', { sourceCcapId: 'source-A', ccapId: 'target-B', sessionId: 's1' });
|
|
42
|
+
const { svc, callback } = makeSvc(subs);
|
|
43
|
+
svc.relaySessionEvent({
|
|
44
|
+
ccapId: 'target-B',
|
|
45
|
+
sessionId: 's1',
|
|
46
|
+
event: 'agent-events',
|
|
47
|
+
data: { eventData: { phase: 'runInitialization', runId: 'r1' } },
|
|
48
|
+
});
|
|
49
|
+
expect(callback).toHaveBeenCalledOnceWith({
|
|
50
|
+
targetInstanceKey: 'source-A',
|
|
51
|
+
event: 'relay:agent-events',
|
|
52
|
+
data: {
|
|
53
|
+
ccapId: 'target-B',
|
|
54
|
+
sessionId: 's1',
|
|
55
|
+
eventData: { phase: 'runInitialization', runId: 'r1' },
|
|
56
|
+
},
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
it('| nem-matching ccapId esetén NEM hív callback-et', () => {
|
|
60
|
+
const subs = new Map();
|
|
61
|
+
subs.set('task-1', { sourceCcapId: 'source-A', ccapId: 'other-target', sessionId: 's1' });
|
|
62
|
+
const { svc, callback } = makeSvc(subs);
|
|
63
|
+
svc.relaySessionEvent({
|
|
64
|
+
ccapId: 'target-B',
|
|
65
|
+
sessionId: 's1',
|
|
66
|
+
event: 'agent-events',
|
|
67
|
+
data: {},
|
|
68
|
+
});
|
|
69
|
+
expect(callback).not.toHaveBeenCalled();
|
|
70
|
+
});
|
|
71
|
+
it('| nem-matching sessionId esetén NEM hív callback-et', () => {
|
|
72
|
+
const subs = new Map();
|
|
73
|
+
subs.set('task-1', { sourceCcapId: 'source-A', ccapId: 'target-B', sessionId: 'other-s' });
|
|
74
|
+
const { svc, callback } = makeSvc(subs);
|
|
75
|
+
svc.relaySessionEvent({
|
|
76
|
+
ccapId: 'target-B',
|
|
77
|
+
sessionId: 's1',
|
|
78
|
+
event: 'agent-events',
|
|
79
|
+
data: {},
|
|
80
|
+
});
|
|
81
|
+
expect(callback).not.toHaveBeenCalled();
|
|
82
|
+
});
|
|
83
|
+
it('| több matching subscription → minden source-ra külön callback', () => {
|
|
84
|
+
const subs = new Map();
|
|
85
|
+
subs.set('task-1', { sourceCcapId: 'source-A', ccapId: 'target-B', sessionId: 's1' });
|
|
86
|
+
subs.set('task-2', { sourceCcapId: 'source-C', ccapId: 'target-B', sessionId: 's1' });
|
|
87
|
+
const { svc, callback } = makeSvc(subs);
|
|
88
|
+
svc.relaySessionEvent({
|
|
89
|
+
ccapId: 'target-B',
|
|
90
|
+
sessionId: 's1',
|
|
91
|
+
event: 'agent-events',
|
|
92
|
+
data: { eventData: { phase: 'runInitialization' } },
|
|
93
|
+
});
|
|
94
|
+
expect(callback).toHaveBeenCalledTimes(2);
|
|
95
|
+
const targets = callback.calls.allArgs().map((args) => args[0].targetInstanceKey);
|
|
96
|
+
expect(targets).toContain('source-A');
|
|
97
|
+
expect(targets).toContain('source-C');
|
|
98
|
+
});
|
|
99
|
+
it('| üres subscriptions Map esetén no-op (callback nincs hívva)', () => {
|
|
100
|
+
const { svc, callback } = makeSvc(new Map());
|
|
101
|
+
svc.relaySessionEvent({
|
|
102
|
+
ccapId: 'target-B',
|
|
103
|
+
sessionId: 's1',
|
|
104
|
+
event: 'agent-events',
|
|
105
|
+
data: {},
|
|
106
|
+
});
|
|
107
|
+
expect(callback).not.toHaveBeenCalled();
|
|
108
|
+
});
|
|
109
|
+
it('| event-name változatlanul `relay:` prefix-szel megy át (whitelist NINCS)', () => {
|
|
110
|
+
const subs = new Map();
|
|
111
|
+
subs.set('task-1', { sourceCcapId: 'source-A', ccapId: 'target-B', sessionId: 's1' });
|
|
112
|
+
const { svc, callback } = makeSvc(subs);
|
|
113
|
+
svc.relaySessionEvent({
|
|
114
|
+
ccapId: 'target-B',
|
|
115
|
+
sessionId: 's1',
|
|
116
|
+
event: 'any-custom-event',
|
|
117
|
+
data: {},
|
|
118
|
+
});
|
|
119
|
+
expect(callback).toHaveBeenCalledOnceWith(jasmine.objectContaining({ event: 'relay:any-custom-event' }));
|
|
120
|
+
});
|
|
121
|
+
});
|
|
122
|
+
//# sourceMappingURL=pei-event-relay.control-service.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pei-event-relay.control-service.spec.js","sourceRoot":"","sources":["../../../../../src/_modules/peer-instance/_services/pei-event-relay.control-service.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{a as x}from"./chunk-VOFDBT5T.js";import{a as T}from"./chunk-UFBTR2BG.js";import{a as P}from"./chunk-7CMPZXAO.js";import{e as D}from"./chunk-25KTNALK.js";import{G as C,I as y,p as N}from"./chunk-RUSAMFGS.js";import{C as f,a as m,aa as o,b as I,h as O,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(S,e){return e}};var L=class{static toDisplayString(S){if(S==null)return"";if(typeof S=="string")return S;if(typeof S=="object"&&S!==null){let t=S;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(S);return e==="[object Object]"?"\u2014":e}};var d=O(N());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",V="notify-user",j="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);currentArchiveScope_$=o("active");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,p=typeof t.sessionId=="string"?t.sessionId:void 0,v=!n&&!p||n===s||p===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,$={role:"assistant",content:i,timestamp:new Date(c)},u=l?I(m({},$),{runId:l}):$,_=this.ensureClientListKey(u);this.messages_$.set([...this.messages_$(),_]);return}if(e.event===V&&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===j){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.toolError,u=n??i.channelId,_=!u||u===s,M=L.toDisplayString($).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 p=(t?.length??0)>0;if(!s.length&&!p)return{sent:!1};let v={role:"user",content:e,timestamp:new Date,processingStatus:"sending"},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,$=this.messages_$().map(u=>{if(u.clientListKey!==i.clientListKey)return u;let _=m({},u);return _.processingStatus="sent",l?.messageKey&&(_.messageKey=l.messageKey),l?.hasTtsAudio!==void 0&&(_.hasTtsAudio=l.hasTtsAudio),_});return this.messages_$.set($),{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}),this.currentArchiveScope_$.set("active")}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?I(m({},e),{clientListKey:s}):I(m({},e),{clientListKey:globalThis.crypto.randomUUID()})}setMessageTtsCached(e){let s=this.messages_$().map(n=>n.messageKey===e?I(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(I(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(p=>this.ensureClientListKey(p));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(I(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(I(m({},t),{isLoadingOlder:!1})),null}})}switchToArchiveView(e){return a(this,null,function*(){this.currentArchiveScope_$.set("archive");let t=this.chunkState_$().archivedTotal;return this.messages_$.set([]),this.chunkState_$.set({total:0,hasMore:!1,nextBeforeIndex:null,isLoadingOlder:!1,archivedTotal:t}),this.loadInitialChunk({sessionId:e,archiveScope:"archive"})})}switchToActiveView(e){return a(this,null,function*(){return this.currentArchiveScope_$.set("active"),this.messages_$.set([]),this.chunkState_$.set({total:0,hasMore:!1,nextBeforeIndex:null,isLoadingOlder:!1,archivedTotal:0}),this.loadInitialChunk({sessionId:e,archiveScope:"active"})})}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 p=r.normalizeRunExecutionModeSocketValue(n);p!==void 0&&this.activeRunExecutionMode_$.set(p)}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-3AG5X2MY.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
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 5 — aktuális archive-view scope\n * (a chat-komponens „Archív szakasz megnyitása\" gomb-toggle-jétől). Default\n * `'active'` — session-switch is reset-eli erre. A `loadInitialChunk` /\n * `loadOlderChunk` callerek ezt olvassák, hogy a megfelelő scope-ot küldjék\n * az API-nak. `'archive'`-ban a chat csak archív üzeneteket lát.\n */\n readonly currentArchiveScope_$ = signal<Ses_ArchiveScope_Type>('active');\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 // REQ-CCI-MSG-UI-FEEDBACK-001: 'sending' állapot — a bubble mellett spinner\n // jelenik meg a REST roundtrip alatt (cross-instance latency-nél kritikus).\n const optimisticMsg: Ses_ClientMessage_Response = {\n role: 'user',\n content: content,\n timestamp: new Date(),\n processingStatus: 'sending',\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 // REQ-CCI-MSG-UI-FEEDBACK-001: 'sent' állapot — REST 200 OK; cross-instance esetén\n // a `response.message` undefined (relayed: true ágon), de az optimistic message\n // így is `sent`-be billen — a target instance fogadta (vagy a relay queue-zta).\n const serverMsg: Ses_ClientMessage_Response | undefined = 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 merged.processingStatus = 'sent';\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 this.currentArchiveScope_$.set('active');\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 * REQ-SES-CONTENT-CHUNK-LOAD-AND-ARCHIVE-001 Slice 5 — archív nézetre váltás.\n * A chat „Archív szakasz megnyitása\" gombja hívja: scope-ot átállítja, törli a\n * jelenlegi (aktív) message-listát, majd `loadInitialChunk`-kal betölti az\n * archív tail-t. Az archivedTotal-t megőrzi a chunk-state-ben (független\n * érték a session-szintű archív szám).\n */\n async switchToArchiveView(sessionId: string): Promise<Ses_MessagesChunk_Response | null> {\n this.currentArchiveScope_$.set('archive');\n const prevArchivedTotal: number = this.chunkState_$().archivedTotal;\n this.messages_$.set([]);\n this.chunkState_$.set({\n total: 0,\n hasMore: false,\n nextBeforeIndex: null,\n isLoadingOlder: false,\n archivedTotal: prevArchivedTotal,\n });\n return this.loadInitialChunk({\n sessionId: sessionId,\n archiveScope: 'archive',\n });\n }\n\n /**\n * REQ-SES-CONTENT-CHUNK-LOAD-AND-ARCHIVE-001 Slice 5 — vissza az aktív nézetre.\n * A chat „Vissza az aktívhoz\" gombja hívja: scope-ot átállítja, törli az\n * archív listát, majd `loadInitialChunk` default scope-pal (active).\n */\n async switchToActiveView(sessionId: string): Promise<Ses_MessagesChunk_Response | null> {\n this.currentArchiveScope_$.set('active');\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 return this.loadInitialChunk({\n sessionId: sessionId,\n archiveScope: 'active',\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. Cross-instance esetben (REQ-CCAP-CROSS-001) a server\n * `{ relayed: true, taskId, targetOnline }` body-t ad vissza — ekkor `message`\n * undefined; lokális esetben a persistált user message-szel tér vissza.\n */\n sendMessage(params: {\n sessionId: string;\n content: string;\n imageAttachments?: Ses_ClientImageAttachment_Response[];\n }): Promise<{\n message?: Ses_ClientMessage_Response;\n relayed?: boolean;\n taskId?: string;\n targetOnline?: boolean;\n }> {\n return firstValueFrom(\n this.http.post<{\n message?: Ses_ClientMessage_Response;\n relayed?: boolean;\n taskId?: string;\n targetOnline?: boolean;\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_$", "currentArchiveScope_$", "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", "processingStatus", "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", "switchToArchiveView", "prevArchivedTotal", "switchToActiveView", "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 +0,0 @@
|
|
|
1
|
-
import{h as f,i as A}from"./chunk-A33MCHYC.js";import{C as E,a as l,aa as i,b as u,k as d,y as _}from"./chunk-TBMJSIBB.js";var m=class o{static buildAnnotationIndex(e){let r=new Map;for(let t of e)t.errorCode&&t.errorCode.length>0&&r.set(t.errorCode,t);return r}static classify(e,r){let t=e.errorCode;if(!t)return{classification:"UNFIXED"};let s=r.get(t);if(!s||!s.fixedInVersion)return{classification:"UNFIXED"};let a=o.parseVersion(s.fixedInVersion),n=o.extractMaxVersion(e.versions);return!a||!n?{classification:"UNFIXED"}:{classification:o.compareVersions(n,a)<0?"STALE-BUILD":"REGRESSION",fixedInVersion:s.fixedInVersion,fixedInCycle:s.fixedInCycle,summary:s.summary}}static classifyAll(e,r){let t=o.buildAnnotationIndex(r);return e.map(s=>u(l({},s),{fixAnnotation:o.classify(s,t)}))}static parseVersion(e){let r=e.match(/(\d+)\.(\d+)\.(\d+)/);return r?[parseInt(r[1],10),parseInt(r[2],10),parseInt(r[3],10)]:null}static extractMaxVersion(e){if(!e||!e.length)return null;let r=null;for(let t of e){let s=o.parseVersion(t);s!=null&&(r==null||o.compareVersions(s,r)>0)&&(r=s)}return r}static compareVersions(e,r){for(let t=0;t<3;t++){let s=e[t]??0,a=r[t]??0;if(s!==a)return s<a?-1:1}return 0}};var p=class{static sortCcapErrorListItemsNewestFirst(e){let r=[...e];return r.sort((t,s)=>{let a=$(t),n=$(s);if(n!==a)return n-a;let c=t._id??"";return(s._id??"").localeCompare(c)}),r}};function $(o){let e=o.lastOccurrenceAt??o.timestamp;if(!e||typeof e!="string"||e.trim().length===0)return 0;let r=Date.parse(e);return Number.isFinite(r)?r:0}var S=(()=>{class o{errors_$=i([]);errorsTotalCount_$=i(0);errorsLoading_$=i(!1);errorsLoadError_$=i(null);errorsLoadErrorRaw_$=i(null);lastRefreshedAt_$=i(null);hideStaleBuild_$=i(!0);fixAnnotations_$=i([]);errors_AS=E(A);loadErrors(){return d(this,null,function*(){this.errorsLoading_$.set(!0),this.errorsLoadError_$.set(null),this.errorsLoadErrorRaw_$.set(null);try{let r=yield this.errors_AS.listErrors(),t=r.errors??[],s=[];try{s=yield this.errors_AS.listFixAnnotations()}catch{s=[]}this.fixAnnotations_$.set(s);let a=m.classifyAll(t,s);this.errors_$.set(p.sortCcapErrorListItemsNewestFirst(a)),this.errorsTotalCount_$.set(r.total),this.lastRefreshedAt_$.set(new Date)}catch(r){this.errorsLoadErrorRaw_$.set(r);let t=f.getErrorMessageForDisplay(r);this.errorsLoadError_$.set(t),this.errors_$.set([]),this.errorsTotalCount_$.set(0)}finally{this.errorsLoading_$.set(!1)}})}clearAll(){return d(this,null,function*(){try{yield this.errors_AS.deleteAllErrors(),yield this.loadErrors()}catch(r){this.errorsLoadErrorRaw_$.set(r);let t=f.getErrorMessageForDisplay(r);this.errorsLoadError_$.set(t)}})}clearOne(r){return d(this,null,function*(){try{yield this.errors_AS.deleteError(r),this.errors_$.update(t=>t.filter(s=>s._id!==r)),this.errorsTotalCount_$.update(t=>Math.max(0,t-1))}catch(t){this.errorsLoadErrorRaw_$.set(t);let s=f.getErrorMessageForDisplay(t);this.errorsLoadError_$.set(s)}})}setPmUserMark(r,t){return d(this,null,function*(){try{let s=yield this.errors_AS.setPmUserMark(r,t),a=s.pmUserMarkedAt!=null&&s.pmUserMarkedAt.trim().length>0?s.pmUserMarkedAt.trim():void 0;this.errors_$.update(n=>n.map(c=>{if(c._id!==r)return c;if(a!=null)return u(l({},c),{pmUserMarkedAt:a});let h=l({},c);return delete h.pmUserMarkedAt,h}))}catch(s){this.errorsLoadErrorRaw_$.set(s);let a=f.getErrorMessageForDisplay(s);this.errorsLoadError_$.set(a)}})}static \u0275fac=function(t){return new(t||o)};static \u0275prov=_({token:o,factory:o.\u0275fac,providedIn:"root"})}return o})();export{S as a};
|
|
2
|
-
//# sourceMappingURL=chunk-CDNAFC73.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["src/app/_collections/error/fix-annotation/ccap-error-fix-classifier.util.ts", "src/app/_collections/error/sort-ccap-error-list-items-newest-first.util.ts", "src/app/_modules/system/_modules/errors/_services/errors.data-service.ts"],
|
|
4
|
-
"sourcesContent": ["import {\n CCAP_ErrorListItem_Response,\n CCAP_ErrorFixClassification_Type,\n CCAP_ErrorFixAnnotation_Response,\n} from '../../../_models/interfaces/feedback-errors/ccap-error-list-item.interface';\nimport { CCAP_FixAnnotation_Response } from '../../../_models/interfaces/feedback-errors/ccap-fix-annotation.interface';\n\n/**\n * Cycle 780 (REQ-SYS-EH-FIX-ANNOTATION-001) — kliens-oldali klasszifikáló util.\n *\n * Egy lekért fix-annotation lista + egy error-rekord versions tömb alapján\n * eldönti, hogy az error STALE-BUILD (régi build, már fixelt), REGRESSION\n * (fix utáni új keletkezés) vagy UNFIXED (nincs annotation az errorCode-ra).\n *\n * Spec: `__specifications/system/runtime-error-fix-annotation.md`.\n */\nexport class CCAP_ErrorFixClassifier_Util {\n\n /**\n * Egy fix-annotation lista (server-side response) → errorCode-indexelt Map.\n */\n static buildAnnotationIndex(\n annotations: CCAP_FixAnnotation_Response[],\n ): Map<string, CCAP_FixAnnotation_Response> {\n const out: Map<string, CCAP_FixAnnotation_Response> = new Map();\n for (const a of annotations) {\n if (a.errorCode && a.errorCode.length > 0) {\n out.set(a.errorCode, a);\n }\n }\n return out;\n }\n\n /**\n * Egy error-rekord klasszifikálása. Az item.fixAnnotation-t adja vissza\n * (a hívó set-eli az item-re vagy egy mapped másolatra).\n */\n static classify(\n item: CCAP_ErrorListItem_Response,\n index: Map<string, CCAP_FixAnnotation_Response>,\n ): CCAP_ErrorFixAnnotation_Response {\n const errorCode: string | undefined = item.errorCode;\n if (!errorCode) {\n return { classification: 'UNFIXED' };\n }\n const ann: CCAP_FixAnnotation_Response | undefined = index.get(errorCode);\n if (!ann || !ann.fixedInVersion) {\n return { classification: 'UNFIXED' };\n }\n const fixV: number[] | null = CCAP_ErrorFixClassifier_Util.parseVersion(ann.fixedInVersion);\n const itemV: number[] | null = CCAP_ErrorFixClassifier_Util.extractMaxVersion(item.versions);\n if (!fixV || !itemV) {\n return { classification: 'UNFIXED' };\n }\n const cls: CCAP_ErrorFixClassification_Type =\n CCAP_ErrorFixClassifier_Util.compareVersions(itemV, fixV) < 0\n ? 'STALE-BUILD'\n : 'REGRESSION';\n return {\n classification: cls,\n fixedInVersion: ann.fixedInVersion,\n fixedInCycle: ann.fixedInCycle,\n summary: ann.summary,\n };\n }\n\n /**\n * Klasszifikáció a teljes listára (új tömb, az eredeti item-ek + fixAnnotation\n * mező).\n */\n static classifyAll(\n items: CCAP_ErrorListItem_Response[],\n annotations: CCAP_FixAnnotation_Response[],\n ): CCAP_ErrorListItem_Response[] {\n const index: Map<string, CCAP_FixAnnotation_Response> =\n CCAP_ErrorFixClassifier_Util.buildAnnotationIndex(annotations);\n return items.map((it: CCAP_ErrorListItem_Response): CCAP_ErrorListItem_Response => ({\n ...it,\n fixAnnotation: CCAP_ErrorFixClassifier_Util.classify(it, index),\n }));\n }\n\n /**\n * Verzió-string parse (`1.1.2473` → `[1, 1, 2473]`). null ha nem semver-szerű.\n * `SERVER-1.1.2469` prefix is elfogadott.\n */\n static parseVersion(v: string): number[] | null {\n const match: RegExpMatchArray | null = v.match(/(\\d+)\\.(\\d+)\\.(\\d+)/);\n if (!match) {\n return null;\n }\n return [\n parseInt(match[1], 10),\n parseInt(match[2], 10),\n parseInt(match[3], 10),\n ];\n }\n\n /**\n * Egy versions tömbből a legmagasabb verziót adja vissza.\n */\n static extractMaxVersion(versions: string[] | undefined): number[] | null {\n if (!versions || !versions.length) {\n return null;\n }\n let best: number[] | null = null;\n for (const v of versions) {\n const parsed: number[] | null = CCAP_ErrorFixClassifier_Util.parseVersion(v);\n if (parsed != null && (best == null || CCAP_ErrorFixClassifier_Util.compareVersions(parsed, best) > 0)) {\n best = parsed;\n }\n }\n return best;\n }\n\n /**\n * Két parse-elt verzió összehasonlítása. -1 / 0 / 1.\n */\n static compareVersions(a: number[], b: number[]): number {\n for (let i: number = 0; i < 3; i++) {\n const av: number = a[i] ?? 0;\n const bv: number = b[i] ?? 0;\n if (av !== bv) {\n return av < bv ? -1 : 1;\n }\n }\n return 0;\n }\n}\n", "import { CCAP_ErrorListItem_Response } from '../../_models/interfaces/feedback-errors/ccap-error-list-item.interface';\n\n/**\n * Hibalista rendezési util – statikus metódusokkal.\n */\nexport class SortCcapErrorListItemsNewestFirst_Util {\n /**\n * Hibalista másolatának rendezése: legfrissebb utolsó előfordulás (vagy első rögzítés) felülre.\n * Nem módosítja az input tömböt.\n */\n static sortCcapErrorListItemsNewestFirst(\n items: CCAP_ErrorListItem_Response[],\n ): CCAP_ErrorListItem_Response[] {\n const copy: CCAP_ErrorListItem_Response[] = [...items];\n copy.sort((a: CCAP_ErrorListItem_Response, b: CCAP_ErrorListItem_Response): number => {\n const msA: number = getErrorListItemSortTimeMs(a);\n const msB: number = getErrorListItemSortTimeMs(b);\n if (msB !== msA) {\n return msB - msA;\n }\n const idA: string = a._id ?? '';\n const idB: string = b._id ?? '';\n return idB.localeCompare(idA);\n });\n return copy;\n }\n}\n\n/**\n * Egy hibalista-elem időbélyege ms-ban a rendezéshez: először lastOccurrenceAt, különben timestamp.\n * Hiányos / érvénytelen dátum → 0 (a lista alja, egymás között _id tie-break).\n */\nfunction getErrorListItemSortTimeMs(item: CCAP_ErrorListItem_Response): number {\n const raw: string | undefined = item.lastOccurrenceAt ?? item.timestamp;\n if (!raw || typeof raw !== 'string' || raw.trim().length === 0) {\n return 0;\n }\n const ms: number = Date.parse(raw);\n return Number.isFinite(ms) ? ms : 0;\n}\n", "import { inject, Injectable, signal } from '@angular/core';\n\nimport { CCAP_ErrorDisplay_Util } from '../../../../../_collections/error/error-display.util';\nimport { CCAP_ErrorFixClassifier_Util } from '../../../../../_collections/error/fix-annotation/ccap-error-fix-classifier.util';\nimport { SortCcapErrorListItemsNewestFirst_Util } from '../../../../../_collections/error/sort-ccap-error-list-items-newest-first.util';\nimport { CCAP_ErrorListItem_Response } from '../../../../../_models/interfaces/feedback-errors/ccap-error-list-item.interface';\nimport { CCAP_FixAnnotation_Response } from '../../../../../_models/interfaces/feedback-errors/ccap-fix-annotation.interface';\nimport { Errors_ApiService } from './errors.api-service';\n\n/**\n * Errors data-service.\n * Egyetlen forrás a hibák listájához: loadErrors, clearAll, clearOne.\n */\n@Injectable({ providedIn: 'root' })\nexport class Errors_DataService {\n\n /** Hibák listája (lastOccurrenceAt DESC). */\n readonly errors_$ = signal<CCAP_ErrorListItem_Response[]>([]);\n\n /**\n * BUG-ERR-COUNT-CAP-001 (cycle 436): teljes szerveroldali error-szám,\n * NEM csak a lekért lap mérete (`errors_$.length` 100/30 cap).\n * A main-menu badge a tényleges szám megjelenítésére használja.\n */\n readonly errorsTotalCount_$ = signal<number>(0);\n\n /** Lista betöltés folyamatban. */\n readonly errorsLoading_$ = signal<boolean>(false);\n\n /** Lista betöltési hiba (null = nincs hiba); rövid szöveg (összefoglaló megjelenítéshez). */\n readonly errorsLoadError_$ = signal<string | null>(null);\n\n /**\n * Lista / törlés művelet nyers hibája (null = nincs hiba); Shared Error komponens input (HttpErrorResponse is).\n */\n readonly errorsLoadErrorRaw_$ = signal<unknown | null>(null);\n\n /** Utolsó sikeres frissítés időpontja (null = még nem volt betöltés). */\n readonly lastRefreshedAt_$ = signal<Date | null>(null);\n\n /**\n * Cycle 780 (REQ-SYS-EH-FIX-ANNOTATION-001) — a /errors UI default szűrője:\n * `STALE-BUILD` items elrejtve. A user toggle-vel kapcsolhatja vissza.\n */\n readonly hideStaleBuild_$ = signal<boolean>(true);\n\n /**\n * Cycle 780 — fix-annotation registry (errorCode → annotation), az utolsó load\n * eredménye. A `/errors` UI a klasszifikáció + summary megjelenítéséhez\n * használja. Üres tömb ha a server nem támogatja még az endpoint-ot.\n */\n readonly fixAnnotations_$ = signal<CCAP_FixAnnotation_Response[]>([]);\n\n private readonly errors_AS: Errors_ApiService = inject(Errors_ApiService);\n\n /**\n * Hibák listájának betöltése a szerverről.\n */\n async loadErrors(): Promise<void> {\n this.errorsLoading_$.set(true);\n this.errorsLoadError_$.set(null);\n this.errorsLoadErrorRaw_$.set(null);\n try {\n const result = await this.errors_AS.listErrors();\n const raw: CCAP_ErrorListItem_Response[] = result.errors ?? [];\n\n // Cycle 780: fix-annotations lekérése + per-item klasszifikáció. Best-effort\n // — ha az endpoint hiányzik (pl. régebbi server build), üres lista mellett\n // minden item UNFIXED-ként klasszifikálódik (default).\n let annotations: CCAP_FixAnnotation_Response[] = [];\n try {\n annotations = await this.errors_AS.listFixAnnotations();\n } catch {\n annotations = [];\n }\n this.fixAnnotations_$.set(annotations);\n const classified: CCAP_ErrorListItem_Response[] =\n CCAP_ErrorFixClassifier_Util.classifyAll(raw, annotations);\n\n this.errors_$.set(SortCcapErrorListItemsNewestFirst_Util.sortCcapErrorListItemsNewestFirst(classified));\n // BUG-ERR-COUNT-CAP-001 (cycle 436): a paged.total a teljes szervert szám\n // (nem a lekért lap mérete) — a main-menu badge ezt használja.\n this.errorsTotalCount_$.set(result.total);\n this.lastRefreshedAt_$.set(new Date());\n } catch (err: unknown) {\n this.errorsLoadErrorRaw_$.set(err);\n const message: string = CCAP_ErrorDisplay_Util.getErrorMessageForDisplay(err);\n this.errorsLoadError_$.set(message);\n this.errors_$.set([]);\n this.errorsTotalCount_$.set(0);\n } finally {\n this.errorsLoading_$.set(false);\n }\n }\n\n /**\n * Összes hiba törlése, majd lista frissítése.\n */\n async clearAll(): Promise<void> {\n try {\n await this.errors_AS.deleteAllErrors();\n await this.loadErrors();\n } catch (err: unknown) {\n this.errorsLoadErrorRaw_$.set(err);\n const message: string = CCAP_ErrorDisplay_Util.getErrorMessageForDisplay(err);\n this.errorsLoadError_$.set(message);\n }\n }\n\n /**\n * Egy hiba törlése id alapján, majd lista frissítése (vagy elem eltávolítása a signal-ból).\n */\n async clearOne(id: string): Promise<void> {\n try {\n await this.errors_AS.deleteError(id);\n this.errors_$.update((list: CCAP_ErrorListItem_Response[]) =>\n list.filter((e: CCAP_ErrorListItem_Response) => e._id !== id),\n );\n // BUG-ERR-COUNT-CAP-001 (cycle 436): a teljes szám is dekrementálódik —\n // különben a badge stale számot mutatna a következő loadErrors-ig.\n this.errorsTotalCount_$.update((count: number): number => Math.max(0, count - 1));\n } catch (err: unknown) {\n this.errorsLoadErrorRaw_$.set(err);\n const message: string = CCAP_ErrorDisplay_Util.getErrorMessageForDisplay(err);\n this.errorsLoadError_$.set(message);\n }\n }\n\n /**\n * PM / user manuális megjelölés; siker esetén a lista signal-ban frissíti az adott sor `pmUserMarkedAt` mezőjét.\n */\n async setPmUserMark(id: string, marked: boolean): Promise<void> {\n try {\n const result: { pmUserMarkedAt: string | null } =\n await this.errors_AS.setPmUserMark(id, marked);\n const nextAt: string | undefined =\n result.pmUserMarkedAt != null && result.pmUserMarkedAt.trim().length > 0\n ? result.pmUserMarkedAt.trim()\n : undefined;\n this.errors_$.update((list: CCAP_ErrorListItem_Response[]) =>\n list.map((e: CCAP_ErrorListItem_Response): CCAP_ErrorListItem_Response => {\n if (e._id !== id) {\n return e;\n }\n // Cycle 780: object-spread, hogy a versions / errorCode / fixAnnotation\n // mezők ne vesszenek el (eddig a kézi tér-a-tér mapping tisztára felülírta).\n if (nextAt != null) {\n return { ...e, pmUserMarkedAt: nextAt };\n }\n const next: CCAP_ErrorListItem_Response = { ...e };\n delete next.pmUserMarkedAt;\n return next;\n }),\n );\n } catch (err: unknown) {\n this.errorsLoadErrorRaw_$.set(err);\n const message: string = CCAP_ErrorDisplay_Util.getErrorMessageForDisplay(err);\n this.errorsLoadError_$.set(message);\n }\n }\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["CCAP_ErrorFixClassifier_Util", "buildAnnotationIndex", "annotations", "out", "Map", "a", "errorCode", "length", "set", "classify", "item", "index", "classification", "ann", "get", "fixedInVersion", "fixV", "parseVersion", "itemV", "extractMaxVersion", "versions", "compareVersions", "fixedInCycle", "summary", "classifyAll", "items", "map", "it", "__spreadProps", "__spreadValues", "fixAnnotation", "v", "match", "parseInt", "best", "parsed", "b", "i", "av", "bv", "SortCcapErrorListItemsNewestFirst_Util", "sortCcapErrorListItemsNewestFirst", "items", "copy", "sort", "a", "b", "msA", "getErrorListItemSortTimeMs", "msB", "idA", "_id", "localeCompare", "item", "raw", "lastOccurrenceAt", "timestamp", "trim", "length", "ms", "Date", "parse", "Number", "isFinite", "Errors_DataService", "errors_$", "signal", "errorsTotalCount_$", "errorsLoading_$", "errorsLoadError_$", "errorsLoadErrorRaw_$", "lastRefreshedAt_$", "hideStaleBuild_$", "fixAnnotations_$", "errors_AS", "inject", "Errors_ApiService", "loadErrors", "__async", "set", "result", "listErrors", "raw", "errors", "annotations", "listFixAnnotations", "classified", "CCAP_ErrorFixClassifier_Util", "classifyAll", "SortCcapErrorListItemsNewestFirst_Util", "sortCcapErrorListItemsNewestFirst", "total", "Date", "err", "message", "CCAP_ErrorDisplay_Util", "getErrorMessageForDisplay", "clearAll", "deleteAllErrors", "clearOne", "id", "deleteError", "update", "list", "filter", "e", "_id", "count", "Math", "max", "setPmUserMark", "marked", "nextAt", "pmUserMarkedAt", "trim", "length", "undefined", "map", "__spreadProps", "__spreadValues", "next", "factory", "\u0275fac", "providedIn"]
|
|
7
|
-
}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import{a as q}from"./chunk-CDNAFC73.js";import{a as M}from"./chunk-OLLHHMTV.js";import{k as w}from"./chunk-BH3GMEZZ.js";import"./chunk-5UPNU54P.js";import{c as T}from"./chunk-A33MCHYC.js";import{p as et}from"./chunk-RUSAMFGS.js";import{$a as J,C as V,D as O,E as P,Fa as d,Ga as k,Ha as f,Hb as H,Ia as z,J as y,K as v,Kb as X,L as j,Ua as N,Z as s,a as S,aa as I,b as A,bb as K,d as R,da as x,ga as E,h as tt,hb as h,ia as F,la as m,oa as L,pa as B,pb as G,qa as l,ra as a,sa as D,ua as $,ub as W,va as b,wa as u,z as U}from"./chunk-TBMJSIBB.js";var Q=tt(et());var it=(i,c)=>c._id,rt=(i,c)=>c.label,ot=()=>[];function st(i,c){if(i&1&&(l(0,"span",6),d(1),a()),i&2){let t=u();s(),f(" ",t.lastRefreshedAgo_$()," ")}}function at(i,c){if(i&1&&(l(0,"div",9)(1,"p",15),d(2,"A lista nem t\xF6lthet\u0151 be."),a(),D(3,"app-ccap-error-display",16),a()),i&2){let t,e=u();s(3),E("error",(t=e.errors_DS.errorsLoadErrorRaw_$())!==null&&t!==void 0?t:e.errors_DS.errorsLoadError_$())}}function lt(i,c){i&1&&(l(0,"p",10),d(1,"Bet\xF6lt\xE9s\u2026"),a())}function dt(i,c){i&1&&(l(0,"p",11),d(1,"Nincs r\xF6gz\xEDtett hiba."),a())}function ut(i,c){i&1&&(l(0,"p",11),d(1," Csak STALE-BUILD bejegyz\xE9sek vannak (r\xE9gebbi server-build-ekb\u0151l, m\xE1r fixelt). Kapcsold ki a sz\u0171r\u0151t a megjelen\xEDt\xE9shez vagy haszn\xE1ld az "),l(2,"code",3),d(3,"errors-cleanup-stale.sh"),a(),d(4,"-t a takar\xEDt\xE1shoz. "),a())}function ct(i,c){if(i&1){let t=$();l(0,"button",31),b("click",function(){y(t);let n=u().$implicit,r=u(2);return v(r.handlePmUserMark(n,!1))}),d(1," Jel\xF6l\xE9s t\xF6rl\xE9se "),a()}if(i&2){let t=u().$implicit,e=u(2);E("disabled",!t._id||e.pmUserMarkBusyErrorId_$()===t._id)}}function _t(i,c){if(i&1){let t=$();l(0,"button",32),b("click",function(){y(t);let n=u().$implicit,r=u(2);return v(r.handlePmUserMark(n,!0))}),d(1," Megjel\xF6l\xE9s "),a()}if(i&2){let t=u().$implicit,e=u(2);E("disabled",!t._id||e.pmUserMarkBusyErrorId_$()===t._id)}}function pt(i,c){i&1&&(l(0,"span",33),d(1," STALE "),a())}function mt(i,c){i&1&&(l(0,"span",34),d(1," REGRESSION "),a())}function xt(i,c){if(i&1&&(l(0,"span",36),d(1),a()),i&2){let t=u(2).$implicit;s(),f(" \u2014 ",t.fixAnnotation.summary," ")}}function ft(i,c){if(i&1&&(l(0,"div",25),x(1,pt,2,0,"span",33)(2,mt,2,0,"span",34),l(3,"span",35),d(4),a(),x(5,xt,2,1,"span",36),a()),i&2){let t=u().$implicit;s(),m(t.fixAnnotation.classification==="STALE-BUILD"?1:t.fixAnnotation.classification==="REGRESSION"?2:-1),s(3),z(" Fixed in ",t.fixAnnotation.fixedInVersion," (cycle ",t.fixAnnotation.fixedInCycle,") "),s(),m(t.fixAnnotation.summary?5:-1)}}function gt(i,c){i&1&&(l(0,"span",28),d(1,"Megjel\xF6lve (PM)"),a())}function bt(i,c){if(i&1&&(l(0,"span",29),d(1),a()),i&2){let t=u().$implicit;s(),f("\xB7 El\u0151fordul\xE1sok: ",t.occurrenceCount,"")}}function Ct(i,c){if(i&1&&(l(0,"span",29),d(1),a()),i&2){let t=u().$implicit;s(),f("\xB7 CCAP: ",t.ccapId,"")}}function Et(i,c){if(i&1&&(l(0,"span",29),d(1),a()),i&2){let t=u().$implicit;s(),f("\xB7 Session: ",t.sessionId,"")}}function ht(i,c){if(i&1&&(l(0,"span",29),d(1),a()),i&2){let t=u().$implicit;s(),f("\xB7 Run: ",t.runId,"")}}function St(i,c){if(i&1&&(l(0,"span",29),d(1),a()),i&2){let t,e=u().$implicit,n=u(2);s(),f("\xB7 ",n.errorContextLineMap_$()[(t=e._id)!==null&&t!==void 0?t:""],"")}}function yt(i,c){if(i&1&&(l(0,"div",43),d(1),a(),l(2,"pre",44),d(3),a()),i&2){let t=u().$implicit;s(),k(t.label),s(2),k(t.value)}}function vt(i,c){if(i&1&&(l(0,"div",42)(1,"span",45),d(2),a(),l(3,"span",46),d(4),a()()),i&2){let t=u().$implicit;s(2),f("",t.label,":"),s(2),k(t.value)}}function $t(i,c){if(i&1&&(l(0,"div",41),x(1,yt,4,2)(2,vt,5,2,"div",42),a()),i&2){let t=c.$implicit;s(),m(t.isMultiline?1:2)}}function kt(i,c){if(i&1&&(l(0,"div",40),L(1,$t,3,1,"div",41,rt),a()),i&2){let t,e=u(2).$implicit,n=u(2);s(),B((t=n.contextDetailEntries_$()[(t=e._id)!==null&&t!==void 0?t:""])!==null&&t!==void 0?t:N(0,ot))}}function It(i,c){if(i&1){let t=$();l(0,"div",30)(1,"button",37),b("click",function(){let n;y(t);let r=u().$implicit,o=u(2);return v(o.toggleContextExpanded((n=r._id)!==null&&n!==void 0?n:""))}),j(),l(2,"svg",38),D(3,"polyline",39),a(),d(4),a(),x(5,kt,3,1,"div",40),a()}if(i&2){let t,e,n,r=u().$implicit,o=u(2);s(2),F("-rotate-90",!o.contextExpandedId_$()[(t=r._id)!==null&&t!==void 0?t:""]),s(2),f(" ",o.contextExpandedId_$()[(e=r._id)!==null&&e!==void 0?e:""]?"Kontextus r\xE9szletek elrejt\xE9se":"Kontextus r\xE9szletek"," "),s(),m(o.contextExpandedId_$()[(n=r._id)!==null&&n!==void 0?n:""]?5:-1)}}function Dt(i,c){if(i&1&&(l(0,"pre",47),d(1),a()),i&2){let t=u(2).$implicit;s(),k(t.stack)}}function Ft(i,c){if(i&1){let t=$();l(0,"div",30)(1,"button",37),b("click",function(){let n;y(t);let r=u().$implicit,o=u(2);return v(o.toggleExpanded((n=r._id)!==null&&n!==void 0?n:""))}),j(),l(2,"svg",38),D(3,"polyline",39),a(),d(4),a(),x(5,Dt,2,1,"pre",47),a()}if(i&2){let t,e,n,r=u().$implicit,o=u(2);s(2),F("-rotate-90",!o.expandedId_$()[(t=r._id)!==null&&t!==void 0?t:""]),s(2),f(" ",o.expandedId_$()[(e=r._id)!==null&&e!==void 0?e:""]?"Stack elrejt\xE9se":"Stack megjelen\xEDt\xE9se"," "),s(),m(o.expandedId_$()[(n=r._id)!==null&&n!==void 0?n:""]?5:-1)}}function Tt(i,c){if(i&1){let t=$();l(0,"div",17)(1,"div",18)(2,"div",19),D(3,"app-s-copy-button",20),x(4,ct,2,1,"button",21)(5,_t,2,1,"button",22),l(6,"button",23),b("click",function(){let n,r=y(t).$implicit,o=u(2);return v(o.clearOne((n=r._id)!==null&&n!==void 0?n:""))}),d(7," T\xF6rl\xE9s "),a()(),l(8,"div",24),x(9,ft,6,4,"div",25),l(10,"p",26),d(11),a(),l(12,"p",27),x(13,gt,2,0,"span",28),l(14,"span",29),d(15),a(),x(16,bt,2,1,"span",29),l(17,"span",29),d(18),J(19,"date"),a(),x(20,Ct,2,1,"span",29)(21,Et,2,1,"span",29)(22,ht,2,1,"span",29)(23,St,2,1,"span",29),a()()(),x(24,It,6,4,"div",30)(25,Ft,6,4,"div",30),a()}if(i&2){let t,e,n,r,o=c.$implicit,g=u(2);s(3),E("content",g.getErrorCopyText(o)),s(),m(o.pmUserMarkedAt!=null&&o.pmUserMarkedAt.trim()?4:5),s(2),E("disabled",!o._id),s(3),m(o.fixAnnotation&&o.fixAnnotation.classification!=="UNFIXED"?9:-1),s(2),k((t=o.message)!==null&&t!==void 0?t:"\u2013"),s(2),m(o.pmUserMarkedAt!=null&&o.pmUserMarkedAt.trim()?13:-1),s(2),f("Forr\xE1s: ",(e=o.source)!==null&&e!==void 0?e:"\u2013",""),s(),m(o.occurrenceCount!=null&&o.occurrenceCount>1?16:-1),s(2),f("\xB7 Utols\xF3: ",((n=o.lastOccurrenceAt)!==null&&n!==void 0?n:o.timestamp)?K(19,15,(n=o.lastOccurrenceAt)!==null&&n!==void 0?n:o.timestamp,"short"):"\u2013",""),s(2),m(o.ccapId!=null&&o.ccapId.trim()?20:-1),s(),m(o.sessionId!=null&&o.sessionId.trim()?21:-1),s(),m(o.runId!=null&&o.runId.trim()?22:-1),s(),m(g.errorContextLineMap_$()[(r=o._id)!==null&&r!==void 0?r:""]?23:-1),s(),m(g.hasContextDetailText(o._id)?24:-1),s(),m(o.stack!=null&&o.stack.trim()?25:-1)}}function wt(i,c){if(i&1&&(l(0,"div",12),L(1,Tt,26,18,"div",17,it),a()),i&2){let t=u();s(),B(t.visibleErrors_$())}}var Y=(()=>{class i{errors_DS=V(q);refreshTick_$=I(0);refreshTickInterval=null;lastRefreshedAgo_$=h(()=>{this.refreshTick_$();let t=this.errors_DS.lastRefreshedAt_$();if(!t)return"";let e=Date.now()-t.getTime(),n=Math.floor(e/1e3),r=Math.floor(n/60),o=Math.floor(r/60);return n<10?"most":n<60?`${n} mp`:r<60?`${r} perce`:`${o} \xF3r\xE1ja`});pmUserMarkBusyErrorId_$=I("");visibleErrors_$=h(()=>{let t=this.errors_DS.errors_$();return this.errors_DS.hideStaleBuild_$()?t.filter(e=>e.fixAnnotation?.classification!=="STALE-BUILD"):t});visibleVsTotalLabel_$=h(()=>{let t=this.errors_DS.errors_$().length,e=this.visibleErrors_$().length;return e===t?`${t}`:`${e} / ${t}`});expandedId_$=I({});contextExpandedId_$=I({});errorContextLineMap_$=h(()=>{let t=this.errors_DS.errors_$(),e={};for(let n of t){let r=n._id??"";e[r]=i.buildRouteUrlLine(n.surroundingState)}return e});contextDetailTextMap_$=h(()=>{let t=this.errors_DS.errors_$(),e={};for(let n of t){let r=n._id??"";e[r]=i.buildSurroundingStateExtraDetail(n.surroundingState)}return e});contextDetailEntries_$=h(()=>{let t=this.errors_DS.errors_$(),e={};for(let n of t){let r=n._id??"";e[r]=i.buildContextDetailEntries(n.surroundingState)}return e});ngOnInit(){this.errors_DS.loadErrors(),this.refreshTickInterval=setInterval(()=>{this.refreshTick_$.update(t=>t+1)},10*Q.second)}ngOnDestroy(){this.refreshTickInterval&&clearInterval(this.refreshTickInterval)}refresh(){this.errors_DS.loadErrors()}clearAll(){this.errors_DS.clearAll()}clearOne(t){this.errors_DS.clearOne(t)}handlePmUserMark(t,e){let n=t._id??"";!n.length||this.pmUserMarkBusyErrorId_$()===n||(this.pmUserMarkBusyErrorId_$.set(n),this.errors_DS.setPmUserMark(n,e).finally(()=>{this.pmUserMarkBusyErrorId_$.set("")}))}isExpanded(t){return this.expandedId_$()[t]===!0}getErrorId(t){return t._id??""}static buildRouteUrlLine(t){if(!t||typeof t!="object")return"";let e=t.route,n=t.url,r=typeof e=="string"&&e.trim().length>0?e.trim():"",o=typeof n=="string"&&n.trim().length>0?n.trim():"";return r&&o?`Route: ${r} \xB7 URL: ${o}`:r?`Route: ${r}`:o?`URL: ${o}`:""}static buildContextLine(t){let e=[];t.ccapId?.trim()&&e.push(`CCAP: ${t.ccapId.trim()}`),t.sessionId?.trim()&&e.push(`Session: ${t.sessionId.trim()}`),t.runId?.trim()&&e.push(`Run: ${t.runId.trim()}`);let n=i.buildRouteUrlLine(t.surroundingState);return n.length>0&&e.push(n),e.join(" \xB7 ")}static buildSurroundingStateExtraDetail(t){let e=i.flattenSurroundingStateForDisplay(t);if(Object.keys(e).length===0)return"";let n=[],r=(p,_)=>{typeof _=="string"&&_.trim().length>0&&n.push(`${p}: ${_.trim()}`)};r("userMessage",e.userMessage),r("sessionId (surroundingState)",e.sessionId),r("runId (surroundingState)",e.runId),r("nodeVersion",e.nodeVersion),r("platform",e.platform),r("timestamp",e.timestamp),r("userAgent",e.userAgent);let o=e.additionalContext;if(T.isRecord(o))try{let p=JSON.stringify(o,null,2);n.push(`additionalContext:
|
|
2
|
-
${p}`)}catch{n.push("additionalContext: [not serializable]")}let g=new Set(["userMessage","sessionId","runId","nodeVersion","platform","timestamp","userAgent","additionalContext","route","url"]),C=Object.keys(e).filter(p=>!g.has(p));C.sort();for(let p of C){let _=e[p];if(_!=null){if(typeof _=="string"||typeof _=="number"||typeof _=="boolean"){n.push(`${p}: ${String(_)}`);continue}try{n.push(`${p}:
|
|
3
|
-
${JSON.stringify(_,null,2)}`)}catch{n.push(`${p}: [not serializable]`)}}}return n.join(`
|
|
4
|
-
`)}static buildContextDetailEntries(t){let e=i.flattenSurroundingStateForDisplay(t);if(Object.keys(e).length===0)return[];let n=[],r=(p,_)=>{typeof _=="string"&&_.trim().length>0&&n.push({label:p,value:_.trim(),isMultiline:!1})};r("sessionId (surroundingState)",e.sessionId),r("runId (surroundingState)",e.runId),r("nodeVersion",e.nodeVersion),r("platform",e.platform),r("timestamp",e.timestamp),r("userMessage",e.userMessage),r("userAgent",e.userAgent);let o=e.additionalContext;if(T.isRecord(o)){let p=i.formatObjectDeep(o);n.push({label:"additionalContext",value:p,isMultiline:!0})}let g=new Set(["userMessage","sessionId","runId","nodeVersion","platform","timestamp","userAgent","additionalContext","route","url"]),C=Object.keys(e).filter(p=>!g.has(p));C.sort();for(let p of C){let _=e[p];if(_!=null){if(typeof _=="string"||typeof _=="number"||typeof _=="boolean"){n.push({label:p,value:String(_),isMultiline:!1});continue}try{let Z=JSON.stringify(_,null,2);n.push({label:p,value:Z,isMultiline:!0})}catch{n.push({label:p,value:"[not serializable]",isMultiline:!1})}}}return n}static formatObjectDeep(t){let e={};for(let n of Object.keys(t))e[n]=i.tryParseJsonString(t[n]);return JSON.stringify(e,null,2)}static tryParseJsonString(t){if(typeof t!="string")return t;let e=t.trim();if(e.startsWith("{")&&e.endsWith("}")||e.startsWith("[")&&e.endsWith("]"))try{return JSON.parse(e)}catch{return t}return t}static flattenSurroundingStateForDisplay(t){if(!t||typeof t!="object")return{};let e=t.surroundingState;if(T.isRecord(e)){let n=t,{surroundingState:r}=n,o=R(n,["surroundingState"]);return S(S({},o),e)}return S({},t)}toggleExpanded(t){this.expandedId_$.update(e=>A(S({},e),{[t]:!e[t]}))}toggleContextExpanded(t){this.contextExpandedId_$.update(e=>A(S({},e),{[t]:!e[t]}))}hasContextDetailText(t){return t?this.contextDetailEntries_$()[t]?.length?!0:this.contextDetailTextMap_$()[t]?.trim().length>0:!1}getErrorCopyText(t){let e=[];t.message?.trim()&&e.push(t.message.trim());let n=[];t.source?.trim()&&n.push(`Forr\xE1s: ${t.source.trim()}`),t.occurrenceCount!=null&&t.occurrenceCount>1&&n.push(`El\u0151fordul\xE1sok: ${t.occurrenceCount}`);let r=t.lastOccurrenceAt??t.timestamp,o=r?(()=>{try{return new Date(r).toLocaleString(void 0,{dateStyle:"short",timeStyle:"short"})}catch{return r}})():"\u2013";o!=="\u2013"&&n.push(`Utols\xF3: ${o}`),n.length>0&&e.push(n.join(" \xB7 "));let g=i.buildContextLine(t);g.trim().length>0&&(e.push(""),e.push(g));let C=i.buildSurroundingStateExtraDetail(t.surroundingState);return C.trim().length>0&&(e.push(""),e.push("Kontextus r\xE9szletek:"),e.push(C.trim())),t.stack?.trim()&&(e.push(""),e.push("Stack:"),e.push(t.stack.trim())),e.join(`
|
|
5
|
-
`)}getErrorContextLine(t){return i.buildContextLine(t)}static \u0275fac=function(e){return new(e||i)};static \u0275cmp=O({type:i,selectors:[["app-ccap-errors"]],decls:24,vars:18,consts:[[1,"max-w-4xl","mx-auto","p-3","gt-xs:p-6","text-neutral-100"],[1,"text-xl","gt-xs:text-2xl","font-bold","mb-4","gt-xs:mb-6"],[1,"text-neutral-400","text-sm","gt-xs:text-base","mb-4","gt-xs:mb-6"],[1,"bg-neutral-800","px-1","rounded"],[1,"flex","flex-wrap","gap-1.5","gt-xs:gap-2","items-center","mb-3","gt-xs:mb-4"],["type","button",1,"px-3","py-1.5","gt-xs:px-4","gt-xs:py-2","text-sm","gt-xs:text-base","border","border-neonCyan","rounded","text-neutral-300","hover:bg-neutral-700","disabled:opacity-50","transition-colors",3,"click","disabled"],[1,"text-neutral-500","text-xs","gt-xs:text-sm"],["type","button",1,"px-3","py-1.5","gt-xs:px-4","gt-xs:py-2","text-sm","gt-xs:text-base","bg-red-900/60","border","border-red-500/70","rounded","text-red-200","hover:bg-red-900/80","disabled:opacity-50","transition-colors",3,"click","disabled"],["type","button","title","R\xE9gebbi server-build-ekb\u0151l sz\xE1rmaz\xF3, m\xE1r fixelt errorok elrejt\xE9se (cycle 780 fix-annotation registry)",1,"ml-auto","px-3","py-1.5","gt-xs:px-4","gt-xs:py-2","text-sm","gt-xs:text-base","border","rounded","transition-colors",3,"click"],[1,"mb-4"],[1,"text-neutral-400"],[1,"text-neutral-500"],[1,"space-y-2","gt-xs:space-y-3"],[1,"pt-4","gt-xs:pt-6"],["routerLink","/",1,"inline-flex","px-3","py-1.5","gt-xs:px-4","gt-xs:py-2","text-sm","gt-xs:text-base","border","border-neonCyan","rounded","text-neutral-300","hover:bg-neutral-700"],[1,"text-neutral-300","mb-3"],[3,"error"],[1,"p-2.5","gt-xs:p-4","bg-neutral-800/50","border","border-neonDefault","rounded-lg"],[1,"min-w-0","flex","flex-col","gap-2","gt-xs:flex-row","gt-xs:items-start","gt-xs:justify-between","gt-xs:gap-2"],[1,"flex","items-center","gap-1.5","gt-xs:gap-2","flex-wrap","justify-end","gt-xs:justify-end","order-1","gt-xs:order-2","shrink-0","w-full","gt-xs:w-auto"],[3,"content"],["type","button",1,"px-2","py-1","gt-xs:px-3","gt-xs:py-1.5","text-amber-300","hover:bg-amber-900/25","rounded","border","border-amber-600/50","text-xs","gt-xs:text-sm","disabled:opacity-50","transition-colors","shrink-0",3,"disabled"],["type","button",1,"px-2","py-1","gt-xs:px-3","gt-xs:py-1.5","text-neutral-300","hover:bg-neutral-700/50","rounded","border","border-neutral-600","text-xs","gt-xs:text-sm","disabled:opacity-50","transition-colors","shrink-0",3,"disabled"],["type","button",1,"px-2","py-1","gt-xs:px-3","gt-xs:py-1.5","text-red-400","hover:bg-red-900/30","rounded","text-xs","gt-xs:text-sm","disabled:opacity-50","transition-colors","shrink-0",3,"click","disabled"],[1,"min-w-0","flex-1","order-2","gt-xs:order-1","w-full","gt-xs:w-auto"],[1,"mb-1","gt-xs:mb-1.5","flex","flex-wrap","items-center","gap-1.5"],[1,"font-medium","text-neutral-200","text-sm","gt-xs:text-base","break-words"],[1,"text-neutral-500","text-[11px]","gt-xs:text-sm","mt-1.5","gt-xs:mt-1","flex","flex-wrap","gap-x-2","gap-y-1"],[1,"break-words","text-amber-400/90","font-medium"],[1,"break-words"],[1,"mt-1.5","gt-xs:mt-2"],["type","button",1,"px-2","py-1","gt-xs:px-3","gt-xs:py-1.5","text-amber-300","hover:bg-amber-900/25","rounded","border","border-amber-600/50","text-xs","gt-xs:text-sm","disabled:opacity-50","transition-colors","shrink-0",3,"click","disabled"],["type","button",1,"px-2","py-1","gt-xs:px-3","gt-xs:py-1.5","text-neutral-300","hover:bg-neutral-700/50","rounded","border","border-neutral-600","text-xs","gt-xs:text-sm","disabled:opacity-50","transition-colors","shrink-0",3,"click","disabled"],["title","R\xE9gebbi server-build, m\xE1r fixelt \u2014 biztons\xE1gosan mark-done-olhat\xF3.",1,"px-1.5","py-0.5","text-[10px]","gt-xs:text-xs","font-mono","uppercase","tracking-wider","bg-emerald-900/60","border","border-emerald-600","rounded","text-emerald-200"],["title","A fix ut\xE1n \xFAjra el\u0151fordult \u2014 val\xF3di regresszi\xF3, vissza implementre.",1,"px-1.5","py-0.5","text-[10px]","gt-xs:text-xs","font-mono","uppercase","tracking-wider","bg-red-900/60","border","border-red-600","rounded","text-red-200"],[1,"text-[11px]","gt-xs:text-xs","text-neutral-400","font-mono"],[1,"text-[11px]","gt-xs:text-xs","text-neutral-500","italic","break-words"],["type","button",1,"text-neutral-400","hover:text-neutral-200","text-xs","gt-xs:text-sm","flex","items-center","gap-1",3,"click"],["viewBox","0 0 24 24","fill","none","stroke","currentColor","stroke-width","2","stroke-linecap","round","stroke-linejoin","round",1,"w-3","h-3","shrink-0","transition-transform","duration-150"],["points","6 9 12 15 18 9"],[1,"mt-1.5","p-2","gt-xs:p-3","bg-neutral-900","rounded","max-h-[70vh]","overflow-y-auto","space-y-1.5","gt-xs:space-y-2"],[1,"text-xs"],[1,"flex","flex-wrap","gap-x-1.5"],[1,"text-neutral-500","font-medium","mb-0.5"],[1,"p-1.5","gt-xs:p-2","bg-neutral-950/60","rounded","text-neutral-300","font-mono","whitespace-pre-wrap","break-words","overflow-x-auto"],[1,"text-neutral-500","font-medium","shrink-0"],[1,"text-neutral-300","break-all","font-mono"],[1,"mt-1","p-1.5","gt-xs:p-2","bg-neutral-900","rounded","text-xs","text-neutral-300","font-mono","whitespace-pre-wrap","break-words","overflow-x-auto","max-h-[70vh]","overflow-y-auto"]],template:function(e,n){e&1&&(l(0,"div",0)(1,"h1",1),d(2,"Hib\xE1k"),a(),l(3,"p",2),d(4," A rendszerben r\xF6gz\xEDtett hib\xE1k list\xE1ja (szerver \xE9s kliens). Sorrend: legfel\xFCl a legfrissebb utols\xF3 el\u0151fordul\xE1s ("),l(5,"code",3),d(6,"lastOccurrenceAt"),a(),d(7," / els\u0151 r\xF6gz\xEDt\xE9s ideje). Azonos hiba t\xF6bbsz\xF6ri el\u0151fordul\xE1sa egy sorban jelenik meg (el\u0151fordul\xE1sok sz\xE1ma). T\xF6r\xF6lheted egyenk\xE9nt vagy mindegyiket egyszerre. "),a(),l(8,"div",4)(9,"button",5),b("click",function(){return n.refresh()}),d(10),a(),x(11,st,2,1,"span",6),l(12,"button",7),b("click",function(){return n.clearAll()}),d(13," \xD6sszes t\xF6rl\xE9se "),a(),l(14,"button",8),b("click",function(){return n.errors_DS.hideStaleBuild_$.set(!n.errors_DS.hideStaleBuild_$())}),d(15),a()(),x(16,at,4,1,"div",9)(17,lt,2,0,"p",10)(18,dt,2,0,"p",11)(19,ut,5,0,"p",11)(20,wt,3,0,"div",12),l(21,"div",13)(22,"a",14),d(23," Vissza "),a()()()),e&2&&(s(9),E("disabled",n.errors_DS.errorsLoading_$()),s(),f(" ",n.errors_DS.errorsLoading_$()?"Bet\xF6lt\xE9s\u2026":"Friss\xEDt\xE9s"," "),s(),m(n.lastRefreshedAgo_$()?11:-1),s(),E("disabled",n.errors_DS.errorsLoading_$()||n.errors_DS.errors_$().length===0),s(2),F("bg-emerald-900",n.errors_DS.hideStaleBuild_$())("border-emerald-500",n.errors_DS.hideStaleBuild_$())("text-emerald-200",n.errors_DS.hideStaleBuild_$())("border-neutral-600",!n.errors_DS.hideStaleBuild_$())("text-neutral-300",!n.errors_DS.hideStaleBuild_$()),s(),z(" ",n.errors_DS.hideStaleBuild_$()?"\u2713 STALE elrejtve":"STALE mutat\xE1sa"," (",n.visibleVsTotalLabel_$(),") "),s(),m(n.errors_DS.errorsLoadError_$()?16:-1),s(),m(n.errors_DS.errorsLoading_$()&&n.errors_DS.errors_$().length===0?17:n.errors_DS.errors_$().length===0&&!n.errors_DS.errorsLoadError_$()?18:n.visibleErrors_$().length===0&&n.errors_DS.hideStaleBuild_$()?19:n.errors_DS.errors_$().length>0?20:-1))},dependencies:[H,w,M,G],encapsulation:2})}return i})();var Mt=[{path:"",pathMatch:"full",component:Y}],Ht=(()=>{class i{static \u0275fac=function(e){return new(e||i)};static \u0275mod=P({type:i});static \u0275inj=U({imports:[W,X.forChild(Mt),w,M]})}return i})();export{Ht as Errors_Module};
|
|
6
|
-
//# sourceMappingURL=err.module-GCKYDYCK.js.map
|