@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
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["src/app/_collections/error/ng0600-route-to-feature-hints.const.ts", "src/app/_collections/error/ng0203-diagnostic.util.ts", "src/app/_collections/error/ng0600-diagnostic.util.ts", "src/app/_collections/utils/object-type-guards.util.ts", "src/app/_collections/error/cursor-cli-agent-docs.const.ts", "src/app/_collections/error/ccap-http-error-troubleshooting-hint.util.ts", "src/app/_collections/error/error-display.util.ts", "src/app/_services/control-services/ccap-global-error.control-service.ts", "src/app/_collections/error/ccap-socket-transport-error-noise-message.util.ts", "src/app/_collections/error/ccap-errors-pm-user-mark-key.const.ts", "src/app/_modules/system/_modules/errors/_services/errors.api-service.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * Route prefix (Router.url) → CCAP feature / forrásmappa tipp NG0600 diagnózishoz.\n * SSOT: app.routing-module.ts top-level path-ok.\n */\nexport const CCAP_NG0600_ROUTE_FEATURE_HINTS: readonly { prefix: string; hint: string }[] = [\n { prefix: '/setup', hint: 'Setup — client/src/app/_modules/config/_modules/setup/' },\n { prefix: '/settings', hint: 'Settings — client/src/app/_modules/config/_modules/settings/' },\n { prefix: '/model-registry', hint: 'Model registry — client/src/app/_modules/model-registry/' },\n { prefix: '/embedding-registry', hint: 'Embedding registry — client/src/app/_modules/ai-systems/_modules/embedding-registry/' },\n { prefix: '/embedding-eval', hint: 'Embedding eval — client/src/app/_modules/embedding-eval/' },\n { prefix: '/session', hint: 'CCAP Session UI — client/src/app/_modules/session/' },\n { prefix: '/errors', hint: 'Errors list — client/src/app/_modules/system/_modules/errors/' },\n { prefix: '/feedback', hint: 'Feedback — client/src/app/_modules/feedback/' },\n { prefix: '/logs', hint: 'Logs — client/src/app/_modules/dev/_modules/devtools/_modules/logs/' },\n { prefix: '/host-runtime-mcp', hint: 'Host runtime MCP — client/src/app/_modules/dev/_modules/host-runtime-mcp/' },\n { prefix: '/voice-notes-poc', hint: 'Voice notes POC — client/src/app/_modules/dev/_modules/poc/voice-notes-poc/' },\n { prefix: '/master-control-remote-poc', hint: 'Master control remote POC — client/src/app/_modules/dev/_modules/poc/master-control-remote-poc/' },\n { prefix: '/workflow-settings', hint: 'Workflow settings — client/src/app/_modules/config/_modules/workflow-settings/' },\n { prefix: '/coordinator', hint: 'Coordinator — client/src/app/_modules/coordinator/' },\n { prefix: '/dark-office', hint: 'Dark Office — client/src/app/_modules/dark-office/' },\n { prefix: '/project-management', hint: 'Project management — client/src/app/_modules/project-management/' },\n { prefix: '/cc-session', hint: 'CC Session UI — client/src/app/_modules/cc-session/' },\n { prefix: '/mobile-app', hint: 'Mobile app — client/src/app/_modules/dev/_modules/poc/mobile-app/' },\n { prefix: '/oc-session', hint: 'OC Session — client/src/app/_modules/oc/' },\n { prefix: '/ca-session', hint: 'CA Session — client/src/app/_modules/ca-session/' },\n { prefix: '/consultant', hint: 'Consultant — client/src/app/_modules/consultant/' },\n { prefix: '/agent-instances', hint: 'Agent instances — client/src/app/_modules/agent-instances/' },\n { prefix: '/terminals', hint: 'Terminals — client/src/app/_modules/dev/_modules/devtools/_modules/terminals/' },\n {\n prefix: '/live-development-pipeline',\n hint: 'Live Development Pipeline — client/src/app/_modules/dev/_modules/devtools/_modules/live-dev-pipeline/',\n },\n {\n prefix: '/system-status',\n hint: 'Legacy route → redirects to /live-development-pipeline — client/src/app/_modules/dev/_modules/devtools/_modules/live-dev-pipeline/',\n },\n { prefix: '/', hint: 'Dashboard (root) — client/src/app/_modules/dashboard/' },\n];\n", "import { CCAP_NG0600_ROUTE_FEATURE_HINTS } from './ng0600-route-to-feature-hints.const';\nimport {\n CCAP_Ng0203DiagnosticResult_Interface,\n} from '../../_models/interfaces/feedback-errors/ccap-ng0203-diagnostic-result.interface';\nimport {\n CCAP_Ng0600BundleHint_Type,\n CCAP_Ng0600ClientSnapshot_Interface,\n CCAP_Ng0600StackFrame_Interface,\n CCAP_Ng0600ToolStep_Interface,\n} from '../../_models/interfaces/feedback-errors/ccap-ng0600-diagnostic-result.interface';\n\n/** NG0203 üzenet szigorú egyezés a globális error pipeline-lal. */\nconst NG0203_MESSAGE: string = 'NG0203';\n\n/**\n * Angular NG0203: inject() injection context-en kívül — diagnosztika (stack, route tipp, útmutató).\n * Szinkron, nincs side effect; stack parse regex alapú (NG0600 util-lal azonos parse logika).\n */\nexport class CCAP_Ng0203Diagnostic_Util {\n\n /**\n * Üzenet alapján NG0203-e (getErrorMessageForDisplay eredményéhez igazítva).\n */\n static isNg0203Message(message: string): boolean {\n return message.trim() === NG0203_MESSAGE;\n }\n\n /**\n * Diagnosztikai objektum építése: kliens kontextus, stack frame-ek, route tipp, útmutató.\n */\n static buildDiagnostics(params: {\n stack?: string;\n context: CCAP_Ng0600ClientSnapshot_Interface;\n clientSource?: string;\n }): CCAP_Ng0203DiagnosticResult_Interface {\n const clientSnapshot: CCAP_Ng0600ClientSnapshot_Interface = {\n route: params.context.route,\n url: params.context.url,\n userAgent: params.context.userAgent,\n timestamp: params.context.timestamp,\n };\n const stackFrames: CCAP_Ng0600StackFrame_Interface[] =\n CCAP_Ng0203Diagnostic_Util.parseStackFrames(params.stack);\n const route: string = typeof params.context.route === 'string' ? params.context.route : '';\n const routeFeatureHints: string[] = CCAP_Ng0203Diagnostic_Util.resolveRouteFeatureHints(route);\n const staticGuidance: string[] = CCAP_Ng0203Diagnostic_Util.buildStaticGuidance();\n const toolSteps: CCAP_Ng0600ToolStep_Interface[] = CCAP_Ng0203Diagnostic_Util.buildToolSteps({\n clientSnapshot: clientSnapshot,\n clientSource: params.clientSource,\n stackFrames: stackFrames,\n routeFeatureHints: routeFeatureHints,\n });\n return {\n summary:\n 'Angular NG0203: inject() was called outside an injection context (constructor, field initializer, factory, or runInInjectionContext).',\n clientSource: params.clientSource,\n clientSnapshot: clientSnapshot,\n stackFrames: stackFrames,\n routeFeatureHints: routeFeatureHints,\n staticGuidance: staticGuidance,\n toolSteps: toolSteps,\n };\n }\n\n /**\n * Report stack végére fűzhető appendix (JSON), hogy a hibalista is tartalmazza.\n */\n static formatDiagnosticsAppendix(diagnostics: CCAP_Ng0203DiagnosticResult_Interface): string {\n let json: string;\n try {\n json = JSON.stringify(diagnostics, null, 2);\n } catch {\n json = '{\"ng0203Diagnostics\":\"JSON stringify failed\"}';\n }\n return `\\n\\n[NG0203 diagnostics]\\n${json}`;\n }\n\n /**\n * Stack szöveg feldarabolása frame-ekre; URL + sor/oszlop kinyerése.\n */\n private static parseStackFrames(stack: string | undefined): CCAP_Ng0600StackFrame_Interface[] {\n if (stack == null || !stack.trim()) {\n return [];\n }\n const lines: string[] = stack.split('\\n').map((l: string): string => l.trim()).filter(\n (l: string): boolean => l.length > 0,\n );\n const frames: CCAP_Ng0600StackFrame_Interface[] = [];\n for (const line of lines) {\n const parsed: CCAP_Ng0600StackFrame_Interface | null =\n CCAP_Ng0203Diagnostic_Util.tryParseStackLine(line);\n if (parsed != null) {\n frames.push(parsed);\n }\n }\n return frames;\n }\n\n /**\n * Egy stack sor parse: `at fn (url:line:col)` vagy `at url:line:col`.\n */\n private static tryParseStackLine(line: string): CCAP_Ng0600StackFrame_Interface | null {\n const parenMatch: RegExpMatchArray | null = line.match(/\\(([^)]+)\\)\\s*$/);\n const urlPart: string | null =\n parenMatch != null && parenMatch[1] != null ? parenMatch[1].trim() : null;\n if (urlPart != null && CCAP_Ng0203Diagnostic_Util.looksLikeUrlWithLineCol(urlPart)) {\n const loc = CCAP_Ng0203Diagnostic_Util.parseUrlLineCol(urlPart);\n if (loc != null) {\n return {\n rawLine: line,\n url: loc.url,\n line: loc.line,\n column: loc.column,\n bundleHint: CCAP_Ng0203Diagnostic_Util.bundleHintFromUrl(loc.url),\n };\n }\n }\n const atMatch: RegExpMatchArray | null = line.match(/\\bat\\s+(\\S+)\\s*$/);\n if (atMatch != null && atMatch[1] != null) {\n const token: string = atMatch[1].trim();\n if (CCAP_Ng0203Diagnostic_Util.looksLikeUrlWithLineCol(token)) {\n const loc = CCAP_Ng0203Diagnostic_Util.parseUrlLineCol(token);\n if (loc != null) {\n return {\n rawLine: line,\n url: loc.url,\n line: loc.line,\n column: loc.column,\n bundleHint: CCAP_Ng0203Diagnostic_Util.bundleHintFromUrl(loc.url),\n };\n }\n }\n }\n return {\n rawLine: line,\n bundleHint: 'other',\n };\n }\n\n private static looksLikeUrlWithLineCol(s: string): boolean {\n return /^https?:\\/\\//.test(s) || s.includes('.js:');\n }\n\n private static parseUrlLineCol(s: string): { url: string; line: number; column: number } | null {\n const re: RegExp = /^(.+):(\\d+):(\\d+)$/;\n const m: RegExpMatchArray | null = s.match(re);\n if (m == null || m[1] == null || m[2] == null || m[3] == null) {\n return null;\n }\n const url: string = m[1];\n const line: number = Number.parseInt(m[2], 10);\n const column: number = Number.parseInt(m[3], 10);\n if (!Number.isFinite(line) || !Number.isFinite(column)) {\n return null;\n }\n return { url: url, line: line, column: column };\n }\n\n private static bundleHintFromUrl(url: string): CCAP_Ng0600BundleHint_Type {\n const lower: string = url.toLowerCase();\n if (lower.includes('main-') && lower.endsWith('.js')) {\n return 'main';\n }\n if (lower.includes('chunk-') || lower.includes('chunk.')) {\n return 'chunk';\n }\n return 'other';\n }\n\n /**\n * Leghosszabb illeszkedő route prefix egy tipp (dashboard csak üres vagy / route-ra).\n */\n private static resolveRouteFeatureHints(route: string): string[] {\n const normalized: string = route.startsWith('/') ? route : (route.length > 0 ? `/${route}` : '');\n const sorted: { prefix: string; hint: string }[] = [...CCAP_NG0600_ROUTE_FEATURE_HINTS].sort(\n (a: { prefix: string; hint: string }, b: { prefix: string; hint: string }): number =>\n b.prefix.length - a.prefix.length,\n );\n for (const entry of sorted) {\n if (entry.prefix === '/') {\n continue;\n }\n if (normalized === entry.prefix || normalized.startsWith(`${entry.prefix}/`)) {\n return [entry.hint];\n }\n }\n if (normalized === '' || normalized === '/') {\n const dash: { prefix: string; hint: string } | undefined = CCAP_NG0600_ROUTE_FEATURE_HINTS.find(\n (e: { prefix: string; hint: string }): boolean => e.prefix === '/',\n );\n if (dash != null) {\n return [dash.hint];\n }\n }\n return [];\n }\n\n private static buildStaticGuidance(): string[] {\n return [\n 'inject() is only valid while Angular constructs the class (constructor / field initializers), in a provider useFactory, or inside runInInjectionContext(injector, fn).',\n 'If the stack shows ngOnInit (or another lifecycle hook), move inject() or APIs that call it (toSignal, input in wrong place) into a field initializer or constructor.',\n 'Capture Injector in the constructor (private readonly injector = inject(Injector)) and use runInInjectionContext for deferred work that must resolve tokens.',\n 'Official reference: https://angular.dev/errors/NG0203',\n ];\n }\n\n private static buildToolSteps(params: {\n clientSnapshot: CCAP_Ng0600ClientSnapshot_Interface;\n clientSource?: string;\n stackFrames: CCAP_Ng0600StackFrame_Interface[];\n routeFeatureHints: string[];\n }): CCAP_Ng0600ToolStep_Interface[] {\n const steps: CCAP_Ng0600ToolStep_Interface[] = [];\n steps.push({\n id: 'clientContext',\n label: 'Client context',\n detail: JSON.stringify(params.clientSnapshot, null, 2),\n });\n steps.push({\n id: 'showErrorSource',\n label: 'showError source',\n detail:\n params.clientSource != null && params.clientSource.trim().length > 0\n ? params.clientSource.trim()\n : '(not provided — global ErrorHandler or direct showError without source string)',\n });\n const frameSummary: string =\n params.stackFrames.length > 0\n ? params.stackFrames\n .slice(0, 8)\n .map((f: CCAP_Ng0600StackFrame_Interface): string => {\n const parts: string[] = [f.bundleHint];\n if (f.url != null) {\n parts.push(f.url);\n }\n if (f.line != null) {\n parts.push(`line ${String(f.line)}`);\n }\n return `${f.rawLine}\\n → ${parts.join(' | ')}`;\n })\n .join('\\n\\n')\n : '(no stack frames parsed)';\n steps.push({\n id: 'stackFrameExtraction',\n label: 'Stack frames (parsed)',\n detail: frameSummary,\n });\n steps.push({\n id: 'ngOnInitHint',\n label: 'Lifecycle hook hint',\n detail:\n 'If you see ngOnInit in the stack, search the corresponding component/service for inject() or helpers that call inject() (toSignal, etc.) inside that hook — relocate to constructor or field initializer.',\n });\n steps.push({\n id: 'routeToFeatureHint',\n label: 'Route → feature hint',\n detail:\n params.routeFeatureHints.length > 0\n ? params.routeFeatureHints.join('\\n')\n : '(no matching app route prefix — check Router.url manually)',\n });\n steps.push({\n id: 'staticGuidance',\n label: 'Static guidance',\n detail: CCAP_Ng0203Diagnostic_Util.buildStaticGuidance().join('\\n'),\n });\n return steps;\n }\n}\n", "import { CCAP_NG0600_ROUTE_FEATURE_HINTS } from './ng0600-route-to-feature-hints.const';\nimport {\n CCAP_Ng0600BundleHint_Type,\n CCAP_Ng0600ClientSnapshot_Interface,\n CCAP_Ng0600DiagnosticResult_Interface,\n CCAP_Ng0600StackFrame_Interface,\n CCAP_Ng0600ToolStep_Interface,\n} from '../../_models/interfaces/feedback-errors/ccap-ng0600-diagnostic-result.interface';\n\n/** NG0600 üzenet szigorú egyezés a globális error pipeline-lal. */\nconst NG0600_MESSAGE: string = 'NG0600';\n\n/**\n * Angular NG0600: signal write reaktív kontextusban — diagnosztikai adatok összeállítása.\n * Szinkron, nincs side effect; stack parse regex alapú.\n */\nexport class CCAP_Ng0600Diagnostic_Util {\n\n /**\n * Üzenet alapján NG0600-e (getErrorMessageForDisplay eredményéhez igazítva).\n */\n static isNg0600Message(message: string): boolean {\n return message.trim() === NG0600_MESSAGE;\n }\n\n /**\n * Diagnosztikai objektum építése: kliens kontextus, source, stack frame-ek, route tipp, útmutató.\n */\n static buildDiagnostics(params: {\n stack?: string;\n context: CCAP_Ng0600ClientSnapshot_Interface;\n clientSource?: string;\n }): CCAP_Ng0600DiagnosticResult_Interface {\n const clientSnapshot: CCAP_Ng0600ClientSnapshot_Interface = {\n route: params.context.route,\n url: params.context.url,\n userAgent: params.context.userAgent,\n timestamp: params.context.timestamp,\n };\n const stackFrames: CCAP_Ng0600StackFrame_Interface[] =\n CCAP_Ng0600Diagnostic_Util.parseStackFrames(params.stack);\n const route: string = typeof params.context.route === 'string' ? params.context.route : '';\n const routeFeatureHints: string[] = CCAP_Ng0600Diagnostic_Util.resolveRouteFeatureHints(route);\n const staticGuidance: string[] = CCAP_Ng0600Diagnostic_Util.buildStaticGuidance();\n const toolSteps: CCAP_Ng0600ToolStep_Interface[] = CCAP_Ng0600Diagnostic_Util.buildToolSteps({\n clientSnapshot: clientSnapshot,\n clientSource: params.clientSource,\n stackFrames: stackFrames,\n routeFeatureHints: routeFeatureHints,\n });\n return {\n summary:\n 'Angular NG0600: signal write inside reactive context (computed, effect, or template).',\n clientSource: params.clientSource,\n clientSnapshot: clientSnapshot,\n stackFrames: stackFrames,\n routeFeatureHints: routeFeatureHints,\n staticGuidance: staticGuidance,\n toolSteps: toolSteps,\n };\n }\n\n /**\n * Report stack végére fűzhető appendix (JSON), hogy a hibalista is tartalmazza.\n */\n static formatDiagnosticsAppendix(diagnostics: CCAP_Ng0600DiagnosticResult_Interface): string {\n let json: string;\n try {\n json = JSON.stringify(diagnostics, null, 2);\n } catch {\n json = '{\"ng0600Diagnostics\":\"JSON stringify failed\"}';\n }\n return `\\n\\n[NG0600 diagnostics]\\n${json}`;\n }\n\n /**\n * Stack szöveg feldarabolása frame-ekre; URL + sor/oszlop kinyerése.\n */\n private static parseStackFrames(stack: string | undefined): CCAP_Ng0600StackFrame_Interface[] {\n if (stack == null || !stack.trim()) {\n return [];\n }\n const lines: string[] = stack.split('\\n').map((l: string): string => l.trim()).filter(\n (l: string): boolean => l.length > 0,\n );\n const frames: CCAP_Ng0600StackFrame_Interface[] = [];\n for (const line of lines) {\n const parsed: CCAP_Ng0600StackFrame_Interface | null =\n CCAP_Ng0600Diagnostic_Util.tryParseStackLine(line);\n if (parsed != null) {\n frames.push(parsed);\n }\n }\n return frames;\n }\n\n /**\n * Egy stack sor parse: `at fn (url:line:col)` vagy `at url:line:col`.\n */\n private static tryParseStackLine(line: string): CCAP_Ng0600StackFrame_Interface | null {\n // Chrome: at name (https://host/path/file.js:225:109561)\n const parenMatch: RegExpMatchArray | null = line.match(/\\(([^)]+)\\)\\s*$/);\n const urlPart: string | null =\n parenMatch != null && parenMatch[1] != null ? parenMatch[1].trim() : null;\n if (urlPart != null && CCAP_Ng0600Diagnostic_Util.looksLikeUrlWithLineCol(urlPart)) {\n const loc = CCAP_Ng0600Diagnostic_Util.parseUrlLineCol(urlPart);\n if (loc != null) {\n return {\n rawLine: line,\n url: loc.url,\n line: loc.line,\n column: loc.column,\n bundleHint: CCAP_Ng0600Diagnostic_Util.bundleHintFromUrl(loc.url),\n };\n }\n }\n // at https://host/path/file.js:225:109561\n const atMatch: RegExpMatchArray | null = line.match(/\\bat\\s+(\\S+)\\s*$/);\n if (atMatch != null && atMatch[1] != null) {\n const token: string = atMatch[1].trim();\n if (CCAP_Ng0600Diagnostic_Util.looksLikeUrlWithLineCol(token)) {\n const loc = CCAP_Ng0600Diagnostic_Util.parseUrlLineCol(token);\n if (loc != null) {\n return {\n rawLine: line,\n url: loc.url,\n line: loc.line,\n column: loc.column,\n bundleHint: CCAP_Ng0600Diagnostic_Util.bundleHintFromUrl(loc.url),\n };\n }\n }\n }\n return {\n rawLine: line,\n bundleHint: 'other',\n };\n }\n\n private static looksLikeUrlWithLineCol(s: string): boolean {\n return /^https?:\\/\\//.test(s) || s.includes('.js:');\n }\n\n private static parseUrlLineCol(s: string): { url: string; line: number; column: number } | null {\n // .../file.js:225:109561 — utolsó két : után számok\n const re: RegExp = /^(.+):(\\d+):(\\d+)$/;\n const m: RegExpMatchArray | null = s.match(re);\n if (m == null || m[1] == null || m[2] == null || m[3] == null) {\n return null;\n }\n const url: string = m[1];\n const line: number = Number.parseInt(m[2], 10);\n const column: number = Number.parseInt(m[3], 10);\n if (!Number.isFinite(line) || !Number.isFinite(column)) {\n return null;\n }\n return { url: url, line: line, column: column };\n }\n\n private static bundleHintFromUrl(url: string): CCAP_Ng0600BundleHint_Type {\n const lower: string = url.toLowerCase();\n if (lower.includes('main-') && lower.endsWith('.js')) {\n return 'main';\n }\n if (lower.includes('chunk-') || lower.includes('chunk.')) {\n return 'chunk';\n }\n return 'other';\n }\n\n /**\n * Leghosszabb illeszkedő route prefix egy tipp (dashboard csak üres vagy / route-ra).\n */\n private static resolveRouteFeatureHints(route: string): string[] {\n const normalized: string = route.startsWith('/') ? route : (route.length > 0 ? `/${route}` : '');\n const sorted: { prefix: string; hint: string }[] = [...CCAP_NG0600_ROUTE_FEATURE_HINTS].sort(\n (a: { prefix: string; hint: string }, b: { prefix: string; hint: string }): number =>\n b.prefix.length - a.prefix.length,\n );\n for (const entry of sorted) {\n if (entry.prefix === '/') {\n continue;\n }\n if (normalized === entry.prefix || normalized.startsWith(`${entry.prefix}/`)) {\n return [entry.hint];\n }\n }\n if (normalized === '' || normalized === '/') {\n const dash: { prefix: string; hint: string } | undefined = CCAP_NG0600_ROUTE_FEATURE_HINTS.find(\n (e: { prefix: string; hint: string }): boolean => e.prefix === '/',\n );\n if (dash != null) {\n return [dash.hint];\n }\n }\n return [];\n }\n\n private static buildStaticGuidance(): string[] {\n return [\n 'Locate a .set(), .update(), or WritableSignal assignment running inside a computed(), effect(), or template binding.',\n 'Defer the write with setTimeout(0) or queueMicrotask if it must run after the reactive cycle (see global showError pattern).',\n 'For legitimate writes inside an effect, pass { allowSignalWrites: true } to the effect options (use sparingly).',\n 'Avoid reading display-only computeds that build diagnostics inside another computed if that triggers extra stacks — keep diagnostics outside reactive context.',\n ];\n }\n\n private static buildToolSteps(params: {\n clientSnapshot: CCAP_Ng0600ClientSnapshot_Interface;\n clientSource?: string;\n stackFrames: CCAP_Ng0600StackFrame_Interface[];\n routeFeatureHints: string[];\n }): CCAP_Ng0600ToolStep_Interface[] {\n const steps: CCAP_Ng0600ToolStep_Interface[] = [];\n steps.push({\n id: 'clientContext',\n label: 'Client context',\n detail: JSON.stringify(params.clientSnapshot, null, 2),\n });\n steps.push({\n id: 'showErrorSource',\n label: 'showError source',\n detail:\n params.clientSource != null && params.clientSource.trim().length > 0\n ? params.clientSource.trim()\n : '(not provided — global ErrorHandler or direct showError without source string)',\n });\n const frameSummary: string =\n params.stackFrames.length > 0\n ? params.stackFrames\n .slice(0, 8)\n .map((f: CCAP_Ng0600StackFrame_Interface): string => {\n const parts: string[] = [f.bundleHint];\n if (f.url != null) {\n parts.push(f.url);\n }\n if (f.line != null) {\n parts.push(`line ${String(f.line)}`);\n }\n return `${f.rawLine}\\n → ${parts.join(' | ')}`;\n })\n .join('\\n\\n')\n : '(no stack frames parsed)';\n steps.push({\n id: 'stackFrameExtraction',\n label: 'Stack frames (parsed)',\n detail: frameSummary,\n });\n steps.push({\n id: 'routeToFeatureHint',\n label: 'Route → feature hint',\n detail:\n params.routeFeatureHints.length > 0\n ? params.routeFeatureHints.join('\\n')\n : '(no matching app route prefix — check Router.url manually)',\n });\n steps.push({\n id: 'staticGuidance',\n label: 'Static guidance',\n detail: CCAP_Ng0600Diagnostic_Util.buildStaticGuidance().join('\\n'),\n });\n return steps;\n }\n}\n", "/**\n * Objektum type guard util – statikus metódusokkal.\n */\nexport class ObjectTypeGuards_Util {\n /**\n * Type guard: az érték nem null, object típusú és nem tömb (Record-szerű objektum).\n * Használat: JSON parse / API body / error shape ellenőrzésnél 'as' cast helyett.\n */\n static isRecord(x: unknown): x is Record<string, unknown> {\n return x !== null && typeof x === 'object' && !Array.isArray(x);\n }\n}\n", "/**\n * Cursor Agent / CLI hivatalos dokumentáció és install oldal URL-ek (CA session troubleshooting).\n * Forrás: https://cursor.com/docs/cli/installation\n */\nexport const CCAP_CURSOR_CLI_DOCS_INSTALLATION_HREF: string = 'https://cursor.com/docs/cli/installation';\n\n/**\n * Cursor CLI használat (Agent a terminálban).\n */\nexport const CCAP_CURSOR_CLI_DOCS_USING_HREF: string = 'https://cursor.com/docs/cli/using';\n\n/**\n * Cursor install / letöltés landing (platform-specifikus script hivatkozások).\n */\nexport const CCAP_CURSOR_CLI_INSTALL_PAGE_HREF: string = 'https://cursor.com/install';\n", "import { HttpErrorResponse } from '@angular/common/http';\n\nimport { ObjectTypeGuards_Util } from '../utils/object-type-guards.util';\nimport {\n CCAP_CURSOR_CLI_DOCS_INSTALLATION_HREF,\n CCAP_CURSOR_CLI_DOCS_USING_HREF,\n CCAP_CURSOR_CLI_INSTALL_PAGE_HREF,\n} from './cursor-cli-agent-docs.const';\nimport {\n CCAP_ErrorTroubleshootingHint_Interface,\n CCAP_ErrorTroubleshootingLink_Interface,\n} from '../../_models/interfaces/ccap-error-troubleshooting-hint.interface';\n\n/**\n * HTTP válasz body-ból DyFM `_errorCode` kiolvasása (string).\n */\nfunction tryReadDyfmErrorCodeFromBody(body: unknown): string | null {\n if (!ObjectTypeGuards_Util.isRecord(body)) {\n return null;\n }\n const raw: unknown = body._errorCode;\n if (typeof raw !== 'string' || !raw.trim().length) {\n return null;\n }\n return raw.trim();\n}\n\n/**\n * CA session / Cursor ACP agent spawn hibákhoz troubleshooting szöveg és hivatalos Cursor doc linkek.\n * A szerver error message English marad; ez a blokc Hunglish user guidance.\n */\nexport class CCAP_HttpErrorTroubleshootingHint_Util {\n\n /**\n * HttpErrorResponse body alapján troubleshooting blokk, ha ismert kód.\n */\n static tryGetHintForUnknownError(params: { error: unknown }): CCAP_ErrorTroubleshootingHint_Interface | null {\n if (!(params.error instanceof HttpErrorResponse)) {\n return null;\n }\n const code: string | null = tryReadDyfmErrorCodeFromBody(params.error.error);\n if (code == null) {\n return null;\n }\n return CCAP_HttpErrorTroubleshootingHint_Util.hintForCaAgentErrorCode({ errorCode: code });\n }\n\n /**\n * Notification bubble-hoz rövid affix (egy sor); üres string ha nincs illeszkedés.\n */\n static tryGetShortNotificationAffix(params: { error: unknown }): string {\n if (!(params.error instanceof HttpErrorResponse)) {\n return '';\n }\n const code: string | null = tryReadDyfmErrorCodeFromBody(params.error.error);\n if (code == null) {\n return '';\n }\n if (code === 'CCAP-CAS-ACP-SPAWN-ENOENT') {\n return (\n ' — A szerver nem találja a Cursor Agent CLI-t (cursor-agent). '\n + 'Telepítés, PATH és Settings → CA Agent: nyisd meg a részleteket.'\n );\n }\n if (code === 'CCAP-CAS-ACP-MISSING-CMD') {\n return ' — CA Agent parancs üres. Állítsd be a Settings → CA Agent → Command mezőt.';\n }\n if (code === 'CCAP-CAS-ACP-SPAWN-ERROR') {\n return ' — CA Agent subprocess indítás sikertelen. Részletek a modálban.';\n }\n return '';\n }\n\n /**\n * DyFM error code → troubleshooting (CA agent / ACP spawn domain).\n */\n private static hintForCaAgentErrorCode(params: {\n errorCode: string;\n }): CCAP_ErrorTroubleshootingHint_Interface | null {\n const commonLinks = CCAP_HttpErrorTroubleshootingHint_Util.cursorCliDocLinks();\n if (params.errorCode === 'CCAP-CAS-ACP-SPAWN-ENOENT') {\n return {\n heading: 'Cursor Agent CLI nem található (ENOENT)',\n bodyLines: [\n 'A CCAP szerver a beállított executable-t a szerver Node process PATH változóján keresi '\n + '(alapértelmezett név: cursor-agent).',\n 'Ha a PowerShellben lefuttatod a telepítőt, de a cursor-agent parancs még mindig „not recognized”, '\n + 'a Windows User PATH frissülhet, de a már futó terminál / IDE nem látja — nyiss új terminált, '\n + 'vagy add hozzá manuálisan a PATH-hoz azt a könyvtárat, ahova a Cursor CLI települt.',\n 'A CCAP szervert ugyanabból a környezetből indítsd, ahol a cursor-agent elérhető '\n + '(ellenőrzés: ugyanabban a shellben where.exe cursor-agent vagy a parancs teljes path-ja).',\n 'Megoldás lehet teljes elérési út a Settings → CA Agent → Command mezőben, '\n + 'vagy a szerver processhez tartozó PATH bővítése.',\n 'Környezeti felülírás (szerver): CCAP_CA_SESSION_AGENT_COMMAND — részletek a szerver dokumentációban / '\n + 'ARCHITECTURE.',\n ],\n links: commonLinks,\n };\n }\n if (params.errorCode === 'CCAP-CAS-ACP-MISSING-CMD') {\n return {\n heading: 'CA Agent parancs nincs beállítva',\n bodyLines: [\n 'A ca-agent settings szekcióban a Command mező üres. Adj meg executable nevet vagy teljes path-ot '\n + '(pl. cursor-agent vagy a telepítő által létrehozott bináris elérési útja).',\n ],\n links: commonLinks,\n };\n }\n if (params.errorCode === 'CCAP-CAS-ACP-SPAWN-ERROR') {\n return {\n heading: 'CA Agent subprocess indítása sikertelen',\n bodyLines: [\n 'A spawn nem ENOENT, de az Agent process nem indult el rendesen. Ellenőrizd a parancsot, argumentumokat '\n + '(Args JSON tömb), és hogy a Cursor Agent CLI verziója támogatja-e az ACP stdio módot.',\n ],\n links: commonLinks,\n };\n }\n if (params.errorCode === 'CCAP-CAS-ACP-CHILD-EXIT') {\n return {\n heading: 'CA Agent kilépett az ACP handshake alatt',\n bodyLines: [\n 'A Cursor CLI alapból nem stdio ACP szervert indít — a hivatalos mód: `cursor-agent acp` (vagy `agent acp`). '\n + 'A CCAP üres Args mellett automatikusan hozzáfűzi az `acp` argumentumot a `cursor-agent` / `agent` '\n + 'parancsokhoz; egyéb binárisnál állítsd be kézzel az Args tömböt a Settings → CA Agent alatt.',\n 'Ha továbbra is exitCode=1: futtasd előbb `cursor-agent login` (vagy API kulcs / token env) ugyanazon '\n + 'felhasználóval, mint ahol a szervert indítod — az ACP `cursor_login` auth ehhez kell.',\n ],\n links: commonLinks,\n };\n }\n return null;\n }\n\n /**\n * Hivatalos Cursor dokumentáció linkek (install + CLI usage).\n */\n private static cursorCliDocLinks(): CCAP_ErrorTroubleshootingLink_Interface[] {\n return [\n { label: 'Cursor — CLI installation (docs)', href: CCAP_CURSOR_CLI_DOCS_INSTALLATION_HREF },\n { label: 'Cursor — Using Agent in CLI (docs)', href: CCAP_CURSOR_CLI_DOCS_USING_HREF },\n { label: 'Cursor — Install / download page', href: CCAP_CURSOR_CLI_INSTALL_PAGE_HREF },\n ];\n }\n}\n", "import { HttpErrorResponse } from '@angular/common/http';\n\nimport { DyFM_Error } from '@futdevpro/fsm-dynamo';\n\nimport { CCAP_HttpErrorMessage_Util } from './http-error-message.util';\nimport { ObjectTypeGuards_Util } from '../utils/object-type-guards.util';\n\n/** Fallback üzenet, ha objektumot nem sikerül értelmezhető stringre alakítani. */\nconst FALLBACK_ERROR_MESSAGE: string = 'Hiba történt (részletek a szerver logban).';\n\n/** Cause lánc rekurzió limit (kör referencia elkerülés). */\nconst FULL_MESSAGE_MAX_DEPTH: number = 10;\n\n/**\n * HTTP válasz body-ból kiolvasott üzenet (error / message mező).\n */\nfunction getBodyMessageFromErrorResponse(body: unknown): string | null {\n if (!ObjectTypeGuards_Util.isRecord(body)) {\n return typeof body === 'string' ? body : null;\n }\n // DyFM_Error response body: a framework res.send(error) a teljes DyFM_Error objektumot küldi,\n // ahol a fő üzenet _message-ben van (nem message-ben), és az error mező beágyazott error objektum.\n if (typeof body._message === 'string' && body._message.trim()) return body._message.trim();\n if (typeof body.error === 'string' && body.error.trim()) return body.error.trim();\n if (typeof body.message === 'string' && body.message.trim()) return body.message.trim();\n // Ha body['error'] objektum, ne String()-eljük (az \"[object Object]\" lenne).\n // Helyette rekurzívan kiolvassuk az üzenetét.\n if (body.error != null && typeof body.error === 'object') {\n const nested: string | null = getBodyMessageFromErrorResponse(body.error);\n if (nested) return nested;\n }\n return null;\n}\n\n/**\n * Egy szintű hibaüzenet kiolvasása (DyFM_Error.getErrorMessage vagy fallback).\n * HttpErrorResponse esetén a szerver body.error/message jelenik meg (getHttpErrorMessage).\n * Nem járja be a cause/error láncot.\n */\nfunction getSingleErrorMessage(error: unknown): string {\n if (error instanceof HttpErrorResponse) {\n const bodyMessage: string | null = getBodyMessageFromErrorResponse(error.error);\n return CCAP_HttpErrorMessage_Util.getHttpErrorMessage(error, bodyMessage);\n }\n try {\n const getMsg: ((e: unknown) => string) | undefined =\n (DyFM_Error as unknown as { getErrorMessage?: (e: unknown) => string }).getErrorMessage;\n if (typeof getMsg === 'function') {\n const msg: string = getMsg(error);\n if (msg && msg !== '[object Object]') {\n return msg;\n }\n }\n } catch {\n // fallback below\n }\n if (error instanceof Error) {\n return error.message || FALLBACK_ERROR_MESSAGE;\n }\n if (!ObjectTypeGuards_Util.isRecord(error)) {\n return String(error) || FALLBACK_ERROR_MESSAGE;\n }\n if (typeof error.message === 'string' && error.message.trim() && error.message !== '[object Object]') {\n return error.message;\n }\n if (typeof error.error === 'string' && error.error.trim() && error.error !== '[object Object]') {\n return error.error;\n }\n if (typeof error.detail === 'string' && error.detail.trim() && error.detail !== '[object Object]') {\n return error.detail;\n }\n try {\n const json: string = JSON.stringify(error);\n if (json && json !== '{}' && json !== '[object Object]') {\n return json;\n }\n } catch {\n // ignore\n }\n return FALLBACK_ERROR_MESSAGE;\n}\n\n/**\n * Nested hiba kiolvasása (wrapper .error vagy Error .cause).\n * Kör referencia esetén null.\n * Blob (pl. HTTP responseType: 'blob' body) esetén null, hogy ne jelenjen meg\n * \"— Caused by: Hiba történt (részletek...)\" — a valódi üzenet az error-display blob parsingból jön.\n */\nfunction getDirectDyFmChildErrorClient(error: unknown): unknown {\n if (!DyFM_Error.isDyFMError(error)) {\n return null;\n }\n const dynamoErr: DyFM_Error = error;\n const arr: unknown[] | undefined = dynamoErr.errors;\n if (Array.isArray(arr) && arr.length > 0) {\n const last: unknown = arr[arr.length - 1];\n if (last != null && last !== error) {\n return last;\n }\n }\n return dynamoErr.error;\n}\n\nfunction getNestedError(error: unknown): unknown {\n if (!ObjectTypeGuards_Util.isRecord(error)) {\n return null;\n }\n const fromDyFm: unknown = getDirectDyFmChildErrorClient(error);\n if (fromDyFm != null && fromDyFm !== error) {\n return fromDyFm;\n }\n const fromError: unknown = error.error;\n if (fromError != null && fromError !== error) {\n if (fromError instanceof Blob) {\n return null;\n }\n return fromError;\n }\n if (error instanceof Error && 'cause' in error) {\n const c: unknown = (error as Error & { cause?: unknown }).cause;\n if (c != null && c !== error) {\n return c;\n }\n }\n return null;\n}\n\n/**\n * __localStack sor DyFM / rekord alapú hibához (report összeállítás).\n */\nfunction tryGetLocalStackBlock(error: unknown): string | undefined {\n if (!ObjectTypeGuards_Util.isRecord(error)) {\n return undefined;\n }\n const ls: unknown = error.__localStack;\n if (ls == null || !String(ls).trim().length) {\n return undefined;\n }\n return `[__localStack]\\n${String(ls)}`;\n}\n\n/**\n * Egy láncszint stack stringje (Error.stack vagy rekord .stack).\n */\nfunction getSingleStackString(error: unknown): string | undefined {\n if (error instanceof Error && typeof error.stack === 'string' && error.stack.trim().length > 0) {\n return error.stack;\n }\n if (ObjectTypeGuards_Util.isRecord(error) && typeof error.stack === 'string' && error.stack.trim().length > 0) {\n return error.stack;\n }\n return undefined;\n}\n\n/**\n * Rekurzív stack szekciók (ugyanaz a lánc, mint getNestedError / üzenet), REQ-SYS-005-CAUSE.\n */\nfunction collectStackSectionsForReport(error: unknown, depth: number): string[] {\n if (error == null || depth <= 0) {\n return [];\n }\n const chunks: string[] = [];\n const localBlock: string | undefined = tryGetLocalStackBlock(error);\n if (localBlock != null) {\n chunks.push(localBlock);\n }\n const stackStr: string | undefined = getSingleStackString(error);\n if (stackStr != null) {\n chunks.push(stackStr);\n }\n const nested: unknown = getNestedError(error);\n if (nested == null) {\n return chunks;\n }\n chunks.push('');\n chunks.push('--- Caused by ---');\n chunks.push('');\n chunks.push(...collectStackSectionsForReport(nested, depth - 1));\n return chunks;\n}\n\n/**\n * Error display util: hibaüzenetek kiolvasása, cause-chain bejárás, stack report összeállítás.\n */\nexport class CCAP_ErrorDisplay_Util {\n\n/**\n * Teljes hibaüzenet a cause/error lánccal (REQ-SYS-005-CAUSE).\n * Egy szintű getSingleErrorMessage + \" — Caused by: \" + rekurzív getFullErrorMessageForDisplay(nested).\n */\nstatic getFullErrorMessageForDisplay(\n error: unknown,\n maxDepth: number = FULL_MESSAGE_MAX_DEPTH,\n): string {\n const base: string = getSingleErrorMessage(error);\n if (maxDepth <= 0) {\n return base;\n }\n const nested: unknown = getNestedError(error);\n if (nested == null) {\n return base;\n }\n const causeMessage: string = CCAP_ErrorDisplay_Util.getFullErrorMessageForDisplay(nested, maxDepth - 1);\n const trimmed: string = causeMessage.trim();\n if (trimmed.length > 0 && trimmed !== base) {\n // Generic fallback szűrés: ha a cause chain csak a fallback üzenet, nem ad hozzá információt\n if (trimmed === FALLBACK_ERROR_MESSAGE) {\n return base;\n }\n // DyFM_Error duplikáció szűrés: a framework res.send(error) a teljes DyFM_Error-t küldi,\n // amiben az error mező ugyanazt az _message-t tartalmazza → a cause chain a base-szel kezdődik.\n // Ilyenkor csak az új részt tartjuk meg (pl. \"X — Caused by: X — Caused by: Y\" → \"X — Caused by: Y\").\n const causedByPrefix: string = base + ' — Caused by: ';\n if (trimmed.startsWith(causedByPrefix)) {\n return trimmed;\n }\n return `${base} — Caused by: ${trimmed}`;\n }\n return base;\n}\n\n/**\n * Tetszőleges érték megjelenítésre és másolásra biztonságos stringre alakítása.\n * Objektum esetén JSON.stringify; \"[object Object]\" és üres string helyett fallback.\n * Defense in depth: a display komponensek ezt használják message/detailsText-re.\n */\nstatic toDisplaySafeString(value: unknown): string {\n if (value === null || value === undefined) {\n return '';\n }\n if (typeof value === 'string') {\n const t: string = value.trim();\n if (!t || t === '[object Object]') {\n return FALLBACK_ERROR_MESSAGE;\n }\n return value;\n }\n if (typeof value === 'object') {\n try {\n const json: string = JSON.stringify(value, null, 2);\n return json;\n } catch {\n return FALLBACK_ERROR_MESSAGE;\n }\n }\n return String(value);\n}\n\n/**\n * Unknown hiba objektumból mindig olvasható message string (soha \"[object Object]\").\n * Teljes cause/error láncot használ (getFullErrorMessageForDisplay), REQ-SYS-005-CAUSE szerint.\n */\nstatic getErrorMessageForDisplay(error: unknown): string {\n return CCAP_ErrorDisplay_Util.getFullErrorMessageForDisplay(error);\n}\n\n/**\n * Stack string a kliens jelentéshez (reportError payload): teljes lánc, nem csak egy szint.\n * Error / DyFM wrapper / .cause — Caused by szekciókkal.\n */\nstatic getStackForReport(error: unknown): string | undefined {\n const parts: string[] = collectStackSectionsForReport(error, FULL_MESSAGE_MAX_DEPTH);\n const joined: string = parts.join('\\n').trim();\n if (!joined.length) {\n return undefined;\n }\n return joined;\n}\n\n}\n", "import { Injectable, inject, signal } from '@angular/core';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { Router } from '@angular/router';\n\nimport { DyFM_Log, second } from '@futdevpro/fsm-dynamo';\n\nimport { CCAP_Ng0203Diagnostic_Util } from '../../_collections/error/ng0203-diagnostic.util';\nimport { CCAP_Ng0600Diagnostic_Util } from '../../_collections/error/ng0600-diagnostic.util';\nimport { CCAP_SocketTransportErrorNoiseMessage_Util } from '../../_collections/error/ccap-socket-transport-error-noise-message.util';\nimport { CCAP_HttpErrorTroubleshootingHint_Util } from '../../_collections/error/ccap-http-error-troubleshooting-hint.util';\nimport { CCAP_ErrorDisplay_Util } from '../../_collections/error/error-display.util';\nimport { CCAP_Ng0203DiagnosticResult_Interface } from '../../_models/interfaces/feedback-errors/ccap-ng0203-diagnostic-result.interface';\nimport { CCAP_Ng0600DiagnosticResult_Interface } from '../../_models/interfaces/feedback-errors/ccap-ng0600-diagnostic-result.interface';\nimport { CCAP_ErrorNotification_Interface } from '../../_models/interfaces/feedback-errors/ccap-error-notification.interface';\nimport { Set_General_DataService } from '../../_modules/config/_modules/settings/_services/data-services/global-settings/set-general.data-service';\nimport { Errors_ApiService } from '../../_modules/system/_modules/errors/_services/errors.api-service';\nimport {\n Err_Report_Request,\n Err_ErrorClientContext_Interface,\n} from '../../_modules/system/_modules/errors/_services/err.api-service.interface';\nimport { CCAP_CopyToClipboardResult_Type } from './global-error.control-service.interface';\n\n/**\n * Globális hiba megjelenítés: notification bubble-ök a main frame bal felső sarkában.\n * Kattintásra modál nyílik a részletes hiba megjelenítéssel (app-ccap-error-display).\n * Több hiba is megjelenhet egymás alatt (max 10 notification).\n * Notification-ban nyers error (unknown) + opcionális clientSource / ng0600|ng0203 diagnosztika; a display intézi.\n * Az error interceptor, Angular ErrorHandler és socket ezt hívja.\n * Nem HTTP hibák esetén jelentést küld a szervernek (POST /errors/report), hogy a hiba a hibalistába kerüljön.\n * Error path-ban soha nem dobunk: showError setTimeout-ban try/catch, re-entrancy guard.\n */\n@Injectable({\n providedIn: 'root',\n})\n/** CCAP_GlobalError_ControlService class. */\nexport class CCAP_GlobalError_ControlService {\n\n private readonly errors_AS: Errors_ApiService = inject(Errors_ApiService);\n private readonly router: Router = inject(Router);\n private readonly settingsGeneral_DS: Set_General_DataService = inject(\n Set_General_DataService,\n );\n\n /** Notification bubble lista (egymás alatt, overlay a content terület bal felső sarkában). */\n readonly errors_$ = signal<CCAP_ErrorNotification_Interface[]>([]);\n\n /**\n * Modálban megjelenítendő notification sor (kattintás a bubble-re): error + NG0600 meta;\n * null ha nincs kiválasztva.\n */\n readonly selectedNotificationForModal_$ = signal<CCAP_ErrorNotification_Interface | null>(null);\n\n /** Következő notification azonosító (auto-increment). */\n private nextNotificationId: number = 0;\n\n /** Maximum notification szám; túllépésnél a legrégebbi eltávolításra kerül. */\n private static readonly maxNotifications: number = 10;\n\n /** Notification bubble automatikus eltűnés ideje (ms). */\n private static readonly autoDismissMs: number = 10 * second;\n\n /** Exit animáció hossza (ms); ennyi idő után kerül ki a notification a listából. */\n private static readonly exitAnimationMs: number = 300;\n\n /**\n * Re-entrancy guard: ha true, a hívók (interceptor, handler) csak logoljanak, ne showError/reportError.\n * Elkerüli a dupla popup és a client–server loop-ot, ha a hiba a report/show path-ban történik.\n */\n private isErrorHandlingInProgress_: boolean = false;\n\n /** Re-entrancy guard aktuális értéke (interceptor/handler ezt ellenőrzi). */\n isErrorHandlingInProgress(): boolean {\n return this.isErrorHandlingInProgress_;\n }\n\n /** Re-entrancy guard bekapcsolása (interceptor/handler hívja show/report előtt). */\n beginErrorHandling(): void {\n this.isErrorHandlingInProgress_ = true;\n }\n\n /** Re-entrancy guard kikapcsolása (finally-ben hívandó). */\n endErrorHandling(): void {\n this.isErrorHandlingInProgress_ = false;\n }\n\n /**\n * Aktuális kliens kontextus (route, URL, userAgent, timestamp).\n * A report payload-hoz és a stack fejléchez használt.\n */\n getCurrentContext(): Err_ErrorClientContext_Interface {\n const route: string = typeof this.router?.url === 'string' ? this.router.url : '';\n const url: string = typeof window !== 'undefined' && window.location?.href ? window.location.href : '';\n const userAgent: string = typeof navigator !== 'undefined' && navigator.userAgent ? navigator.userAgent : '';\n const timestamp: string = new Date().toISOString();\n return { route: route || undefined, url: url || undefined, userAgent: userAgent || undefined, timestamp: timestamp };\n }\n\n /**\n * Stack string kontextus fejléccel (route, URL, userAgent, timestamp); mindig van stack a report-ban.\n */\n private buildStackWithContext(\n errorStack: string | undefined,\n context: Err_ErrorClientContext_Interface,\n ): string {\n const lines: string[] = ['[Context]'];\n if (context.route != null && context.route.length > 0) {\n lines.push(`Route: ${context.route}`);\n }\n if (context.url != null && context.url.length > 0) {\n lines.push(`URL: ${context.url}`);\n }\n if (context.userAgent != null && context.userAgent.length > 0) {\n lines.push(`User-Agent: ${context.userAgent}`);\n }\n if (context.timestamp != null && context.timestamp.length > 0) {\n lines.push(`Timestamp: ${context.timestamp}`);\n }\n const header: string = lines.join('\\n');\n const body: string = (errorStack != null && errorStack.trim().length > 0) ? errorStack.trim() : '(no stack)';\n return `${header}\\n\\n${body}`;\n }\n\n /**\n * Report payload készítése nyers error-ból: message, stack (kontextussal), source, clientContext.\n * Az interceptor és a showError ezt használja, hogy mindig stack + route/URL legyen a jelentésben.\n */\n buildReportPayloadFromError(error: unknown, source: string): Err_Report_Request {\n const context: Err_ErrorClientContext_Interface = this.getCurrentContext();\n const baseMessage: string = CCAP_ErrorDisplay_Util.getErrorMessageForDisplay(error);\n // BUG-CC-DISPATCH-DUP-LOG-001 / alapelv 24 #2 detail-bővítés (cycle 731):\n // HTTP errorra a server-side record `message` mezője gazdagítva URL + status\n // sufix-szel (pl. „fetch failed\" → „fetch failed | URL: https://… | status: 0\")\n // — diagnosztika a /errors page-en grep-elhető, a UI-display NEM érintett (a\n // baseMessage külön az ErrorDisplay path-on megy a popup-ba).\n const message: string =\n CCAP_GlobalError_ControlService.enrichMessageForReport(error, baseMessage);\n const rawStack: string | undefined = CCAP_ErrorDisplay_Util.getStackForReport(error);\n const stack: string = this.buildStackWithContext(rawStack, context);\n // -- errorCode és additionalContent kinyerése (DyFM_Error / errorDetails objektumok) --\n const errorCode: string | undefined =\n CCAP_GlobalError_ControlService.extractErrorCode(error);\n const errorAdditionalContent: Record<string, unknown> | undefined =\n CCAP_GlobalError_ControlService.extractAdditionalContent(error);\n return {\n message,\n stack,\n source: source ?? 'client-app',\n errorCode: errorCode,\n errorAdditionalContent: errorAdditionalContent,\n clientContext: context,\n };\n }\n\n /**\n * cycle 731 — alapelv 24 #2 detail-bővítés a server-side error-record `message`\n * mezőjére. HttpErrorResponse esetén a baseMessage-hez `| URL: <url> | status: <n>`\n * sufix-et fűz; minden más hiba esetén változatlanul tér vissza. Pure-static\n * helper a unit-teszthez.\n */\n static enrichMessageForReport(error: unknown, baseMessage: string): string {\n if (!(error instanceof HttpErrorResponse)) {\n return baseMessage;\n }\n const urlPart: string = error.url ? `URL: ${error.url}` : 'URL: (?)';\n const statusPart: string = `status: ${error.status}`;\n return `${baseMessage} | ${urlPart} | ${statusPart}`;\n }\n\n /**\n * errorCode kinyerése tetszőleges error objektumból (DyFM_Error, errorDetails, plain record).\n */\n private static extractErrorCode(error: unknown): string | undefined {\n if (error == null || typeof error !== 'object') {\n return undefined;\n }\n const rec: Record<string, unknown> = error as Record<string, unknown>;\n if (typeof rec.errorCode === 'string' && rec.errorCode.length > 0) {\n return rec.errorCode;\n }\n if (typeof rec._errorCode === 'string' && rec._errorCode.length > 0) {\n return rec._errorCode;\n }\n return undefined;\n }\n\n /**\n * additionalContent kinyerése tetszőleges error objektumból.\n */\n private static extractAdditionalContent(error: unknown): Record<string, unknown> | undefined {\n if (error == null || typeof error !== 'object') {\n return undefined;\n }\n const rec: Record<string, unknown> = error as Record<string, unknown>;\n if (rec.additionalContent != null && typeof rec.additionalContent === 'object') {\n return rec.additionalContent as Record<string, unknown>;\n }\n return undefined;\n }\n\n /**\n * Report payload készítése message/source/stack paraméterekből (pl. reportErrorOnly).\n * Kontextust és stack fejlécet mindig hozzáadja.\n */\n buildReportPayloadFromParams(params: {\n message: string;\n source: string;\n stack?: string;\n }): Err_Report_Request {\n const context: Err_ErrorClientContext_Interface = this.getCurrentContext();\n const stack: string = this.buildStackWithContext(params.stack, context);\n return {\n message: params.message,\n stack,\n source: params.source,\n clientContext: context,\n };\n }\n\n /**\n * Hiba megjelenítése notification bubble-ként az overlay-ben.\n * Nem HttpErrorResponse esetén jelentést küld a szervernek (hibalista); HTTP hibákat az interceptor már jelentette.\n * A notification az errors_$ listába kerül; a felhasználó kattintásra nyitja a részletes modált.\n * Signal write késleltetve (setTimeout), hogy ne NG0600 legyen, ha a hívás reaktív kontextusból\n * jön (pl. socket callback, HTTP observer, ErrorHandler).\n * Error path: signal set try/catch-ben, soha nem dobunk.\n */\n showError(error: unknown, source?: string): void {\n setTimeout((): void => {\n try {\n // Transport zaj (pl. xhr poll error) gyakran Angular ErrorHandler-ből jön: ugyanazt a general flag-et\n // alkalmazzuk — nincs notification és nincs hibalista-report, ha a socket lista-report ki van kapcsolva.\n let displayMessage: string = CCAP_ErrorDisplay_Util.getErrorMessageForDisplay(error);\n const troubleshootingAffix: string = CCAP_HttpErrorTroubleshootingHint_Util.tryGetShortNotificationAffix({\n error: error,\n });\n if (troubleshootingAffix.length > 0) {\n displayMessage = displayMessage + troubleshootingAffix;\n }\n if (!(error instanceof HttpErrorResponse)) {\n const reportSocketList: boolean =\n this.settingsGeneral_DS.section_$().form.reportSocketConnectionErrorsToErrorList === true;\n if (\n !reportSocketList\n && CCAP_SocketTransportErrorNoiseMessage_Util.matchesDisplayMessage(displayMessage)\n ) {\n if (error instanceof Error) {\n DyFM_Log.error('[CCAP]', source ?? 'client-app', error);\n }\n return;\n }\n }\n\n const context: Err_ErrorClientContext_Interface = this.getCurrentContext();\n let ng0600Diagnostics: CCAP_Ng0600DiagnosticResult_Interface | undefined;\n if (CCAP_Ng0600Diagnostic_Util.isNg0600Message(displayMessage)) {\n try {\n ng0600Diagnostics = CCAP_Ng0600Diagnostic_Util.buildDiagnostics({\n stack: CCAP_ErrorDisplay_Util.getStackForReport(error),\n context: {\n route: context.route,\n url: context.url,\n userAgent: context.userAgent,\n timestamp: context.timestamp,\n },\n clientSource: source,\n });\n } catch (diagErr: unknown) {\n DyFM_Log.error('CCAP NG0600 diagnostics failed', diagErr);\n }\n }\n let ng0203Diagnostics: CCAP_Ng0203DiagnosticResult_Interface | undefined;\n if (CCAP_Ng0203Diagnostic_Util.isNg0203Message(displayMessage)) {\n try {\n ng0203Diagnostics = CCAP_Ng0203Diagnostic_Util.buildDiagnostics({\n stack: CCAP_ErrorDisplay_Util.getStackForReport(error),\n context: {\n route: context.route,\n url: context.url,\n userAgent: context.userAgent,\n timestamp: context.timestamp,\n },\n clientSource: source,\n });\n } catch (diagErr: unknown) {\n DyFM_Log.error('CCAP NG0203 diagnostics failed', diagErr);\n }\n }\n\n // Notification hozzáadása a listához; ha túl sok van, a legrégebbit eldobjuk.\n const trimmedSource: string | undefined =\n source != null && source.trim().length > 0 ? source.trim() : undefined;\n const entry: CCAP_ErrorNotification_Interface = {\n id: this.nextNotificationId++,\n error: error,\n displayMessage: displayMessage,\n timestamp: Date.now(),\n isDismissing: false,\n clientSource: trimmedSource,\n ng0600Diagnostics: ng0600Diagnostics,\n ng0203Diagnostics: ng0203Diagnostics,\n };\n this.errors_$.update((list: CCAP_ErrorNotification_Interface[]): CCAP_ErrorNotification_Interface[] => {\n const updated: CCAP_ErrorNotification_Interface[] = [...list, entry];\n if (updated.length > CCAP_GlobalError_ControlService.maxNotifications) {\n return updated.slice(updated.length - CCAP_GlobalError_ControlService.maxNotifications);\n }\n return updated;\n });\n\n // Auto-dismiss: 10 másodperc után a notification automatikusan eltűnik.\n setTimeout((): void => {\n this.dismissNotification(entry.id);\n }, CCAP_GlobalError_ControlService.autoDismissMs);\n\n // Konzolra is logoljuk, hogy a DevTools source map-pal jelenítse meg a stack-et (ha a .map fájlok betöltődtek).\n if (error instanceof Error) {\n DyFM_Log.error('[CCAP]', source ?? 'client-app', error);\n }\n // HTTP hibákat az interceptor már jelentette; csak nem HTTP hibákat küldjük a hibalistába.\n if (!(error instanceof HttpErrorResponse)) {\n const basePayload: Err_Report_Request =\n this.buildReportPayloadFromError(error, source ?? 'client-app');\n let diagnosticAppendix: string = '';\n if (ng0600Diagnostics != null) {\n diagnosticAppendix = CCAP_Ng0600Diagnostic_Util.formatDiagnosticsAppendix(ng0600Diagnostics);\n } else if (ng0203Diagnostics != null) {\n diagnosticAppendix = CCAP_Ng0203Diagnostic_Util.formatDiagnosticsAppendix(ng0203Diagnostics);\n }\n const stackWithDiagnostics: string =\n diagnosticAppendix.length > 0\n ? `${basePayload.stack ?? ''}${diagnosticAppendix}`\n : (basePayload.stack ?? '');\n const payload: Err_Report_Request = {\n message: basePayload.message,\n stack: stackWithDiagnostics,\n source: basePayload.source,\n sessionId: basePayload.sessionId,\n runId: basePayload.runId,\n errorCode: basePayload.errorCode,\n errorAdditionalContent: basePayload.errorAdditionalContent,\n clientContext: basePayload.clientContext,\n };\n this.errors_AS.reportError(payload).catch((): void => {});\n }\n } catch (e: unknown) {\n DyFM_Log.error('CCAP showError set failed', e);\n }\n }, 0);\n }\n\n /**\n * Notification bubble kiválasztása (kattintás): megnyitja a részletes hiba modált.\n * A notification a listából nem kerül el — a felhasználó külön zárja be (dismissNotification).\n */\n selectError(id: number): void {\n const entry: CCAP_ErrorNotification_Interface | undefined =\n this.errors_$().find((e: CCAP_ErrorNotification_Interface): boolean => e.id === id);\n if (entry != null) {\n this.selectedNotificationForModal_$.set(entry);\n }\n }\n\n /**\n * Notification bubble eltávolítása: exit animáció indítása (isDismissing flag),\n * majd az animáció végén tényleges eltávolítás a listából.\n * Ha már dismissing, nem indít újabb timert.\n */\n dismissNotification(id: number): void {\n const current: CCAP_ErrorNotification_Interface[] = this.errors_$();\n const entry: CCAP_ErrorNotification_Interface | undefined =\n current.find((e: CCAP_ErrorNotification_Interface): boolean => e.id === id);\n if (entry == null || entry.isDismissing) {\n return;\n }\n // isDismissing flag beállítása: az exit animáció CSS osztályt aktiválja a template-ben.\n this.errors_$.update(\n (list: CCAP_ErrorNotification_Interface[]): CCAP_ErrorNotification_Interface[] =>\n list.map((e: CCAP_ErrorNotification_Interface): CCAP_ErrorNotification_Interface =>\n e.id === id ? { ...e, isDismissing: true } : e,\n ),\n );\n // Animáció végén tényleges eltávolítás.\n setTimeout((): void => {\n this.errors_$.update(\n (list: CCAP_ErrorNotification_Interface[]): CCAP_ErrorNotification_Interface[] =>\n list.filter((e: CCAP_ErrorNotification_Interface): boolean => e.id !== id),\n );\n }, CCAP_GlobalError_ControlService.exitAnimationMs);\n }\n\n /** Részletes hiba modál bezárása (a modal close eseményére). */\n dismissSelected(): void {\n this.selectedNotificationForModal_$.set(null);\n }\n\n /** Összes notification és a modal bezárása. */\n dismissAll(): void {\n this.errors_$.set([]);\n this.selectedNotificationForModal_$.set(null);\n }\n\n /**\n * Szöveg másolása a vágólapra.\n * Visszaadja a sikerességet; sikertelen esetben az error a hibalistába reportolható.\n * Először a secure Clipboard API-t próbálja; ha az nem elérhető vagy hibázik, legacy\n * `document.execCommand('copy')` + rejtett textarea (HTTP / régi böngészők, user gesture mellett).\n */\n async copyToClipboard(text: string): Promise<CCAP_CopyToClipboardResult_Type> {\n const viaClipboardApi: boolean = await this.tryWriteTextWithNavigatorClipboard(text);\n if (viaClipboardApi) {\n return { ok: true };\n }\n if (this.copyTextWithExecCommand(text)) {\n return { ok: true };\n }\n return {\n ok: false,\n error: new Error(\n 'Clipboard copy failed (secure Clipboard API unavailable or denied, and legacy execCommand copy failed)',\n ),\n };\n }\n\n /**\n * `navigator.clipboard.writeText` ha elérhető; false, ha nincs API, vagy a hívás rejectel / nem futtatható.\n */\n private async tryWriteTextWithNavigatorClipboard(text: string): Promise<boolean> {\n const clipboard: Clipboard | undefined = typeof navigator !== 'undefined' ? navigator.clipboard : undefined;\n if (clipboard == null || typeof clipboard.writeText !== 'function') {\n return false;\n }\n try {\n await clipboard.writeText(text);\n return true;\n } catch {\n return false;\n }\n }\n\n /**\n * Rejtett textarea + `document.execCommand('copy')` — nem igényel secure context-et; user gesture-ből\n * (pl. copy gomb) hívva sok böngészőben működik HTTP-n is.\n */\n private copyTextWithExecCommand(text: string): boolean {\n if (typeof document === 'undefined' || typeof document.execCommand !== 'function') {\n return false;\n }\n const textarea: HTMLTextAreaElement = document.createElement('textarea');\n textarea.value = text;\n textarea.setAttribute('readonly', '');\n textarea.setAttribute('aria-hidden', 'true');\n // Kis, láthatatlan mező a viewport-ban: egyes mobil böngészők a teljesen off-screen elemet nem másolják.\n textarea.style.position = 'fixed';\n textarea.style.top = '0';\n textarea.style.left = '0';\n textarea.style.width = '1px';\n textarea.style.height = '1px';\n textarea.style.padding = '0';\n textarea.style.margin = '0';\n textarea.style.border = 'none';\n textarea.style.outline = 'none';\n textarea.style.opacity = '0';\n textarea.style.pointerEvents = 'none';\n document.body.appendChild(textarea);\n textarea.focus();\n textarea.select();\n const end: number = text.length;\n textarea.setSelectionRange(0, end);\n let copied: boolean = false;\n try {\n copied = document.execCommand('copy');\n } catch {\n copied = false;\n }\n textarea.remove();\n return copied;\n }\n\n /**\n * Hiba jelentése a szervernek a hibalistába, popup megjelenítés nélkül.\n * Mindig hozzáadja a kontextust (route, URL, userAgent, timestamp) és stack fejlécet.\n * Socket transport: ha a general flag ki van kapcsolva, nem küldünk client-socket forrást és a zaj-üzenetet\n * (pl. „WebSocket: xhr poll error — …”) más forrással sem — régi bundle / versenyhelyzet ellen.\n */\n reportErrorOnly(params: { message: string; source: string; stack?: string }): void {\n const reportSocketList: boolean =\n this.settingsGeneral_DS.section_$().form.reportSocketConnectionErrorsToErrorList === true;\n if (!reportSocketList) {\n if (params.source === 'client-socket') {\n return;\n }\n if (CCAP_SocketTransportErrorNoiseMessage_Util.matchesDisplayMessage(params.message)) {\n return;\n }\n }\n const payload: Err_Report_Request =\n this.buildReportPayloadFromParams(params);\n this.errors_AS.reportError(payload).catch((): void => {});\n }\n}\n\n", "/**\n * Socket.IO / engine.io transport hibák megjelenített üzenet-alapú felismerése.\n * Ezek gyakran Zone / ErrorHandler úton is bejutnak (showError), nem csak a socket control service reportErrorOnly-ján.\n */\nexport class CCAP_SocketTransportErrorNoiseMessage_Util {\n /**\n * Igaz, ha a getErrorMessageForDisplay / report message tipikus transport zaj (pl. szerver restart),\n * és a general flag kikapcsolásakor érdemes elnyelni a hibalistát és a globális popup-ot is.\n */\n static matchesDisplayMessage(message: string): boolean {\n // Em dash / en dash / hyphen: a buildSocketErrorDisplay „ — ” formátumot használ; a substring így is illeszkedik.\n const m: string = message.trim().toLowerCase();\n if (!m.length) {\n return false;\n }\n if (m.includes('xhr poll error')) {\n return true;\n }\n if (m.includes('websocket:') && m.includes('xhr poll')) {\n return true;\n }\n if (m === 'timeout') {\n return true;\n }\n if (m.includes('websocket error')) {\n return true;\n }\n if (m.includes('websocket:') && m.includes('timeout')) {\n return true;\n }\n return false;\n }\n}\n", "/**\n * `additionalContent` kulcs a PM / user manuális megjelöléshez (ISO időbélyeg string).\n * Szerver: ugyanaz a literál (`ccap-errors-pm-user-mark-key.const.ts`).\n */\nexport const CCAP_ERRORS_PM_USER_MARKED_AT_KEY: string = 'pmUserMarkedAt';\n", "import { inject, Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\n\nimport { firstValueFrom, map } from 'rxjs';\n\nimport { DyFM_Paged } from '@futdevpro/fsm-dynamo';\n\nimport { environment } from '../../../../../../environments/environment';\nimport { CCAP_ERRORS_PM_USER_MARKED_AT_KEY } from '../../../../../_collections/error/ccap-errors-pm-user-mark-key.const';\nimport { ObjectTypeGuards_Util } from '../../../../../_collections/utils/object-type-guards.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 { Err_Report_Request } from './err.api-service.interface';\n\n/**\n * DyNTS error list item – DyFM_Errors rekord + Mon_Errors root mezők (ccapId, sessionId, runId),\n * ha a szerializált válasz tartalmazza.\n */\ninterface CCAP_DyNTSErrorRecord_Response {\n _id?: string;\n message?: string;\n /** DyFM_Error gyökér / legacy Mongo doc: üres message mellett itt lehet szöveg. */\n _message?: string;\n _errorCode?: string;\n flag?: string;\n /** Ritka: rosszul mentett doc, ahol a gyökér DyFM_Error-szerű; stack itt lehet. */\n error?: unknown;\n d_error?: unknown;\n ___issuerService?: string;\n /** Sorok tömbje vagy egybefüggő string (szerializáció / régi doc). */\n stackTrace?: string[] | string;\n /** Ritka: ha a szerver stringként küldi a stack-et üres stackTrace mellett. */\n stack?: string;\n source?: string;\n count?: number;\n __lastModified?: string;\n __created?: string;\n ccapId?: unknown;\n sessionId?: unknown;\n runId?: unknown;\n additionalContent?: unknown;\n /** DyFM_Errors versions tömb (cycle 780 klasszifikáció bemenete). */\n versions?: unknown;\n}\n\n/** Alapértelmezett page size a hiba listázáshoz. */\nconst DEFAULT_PAGE_SIZE: number = 100;\n\n/**\n * Errors API service.\n * HTTP hívások a DyNTS default /errors/error/* endpoint-jaira: lista, törlés, kliens jelentés.\n */\n@Injectable({ providedIn: 'root' })\nexport class Errors_ApiService {\n\n /** API base URL. */\n private baseUrl: string = `${environment.api.baseUrl}/errors`;\n\n private readonly http: HttpClient = inject(HttpClient);\n\n /**\n * Hibák listázása (__lastModified DESC – DyNTS get-last-paged).\n * A DyFM_Paged<DyFM_Errors> items-t CCAP_ErrorListItem_Response[]-ra map-eli.\n */\n listErrors(params?: { limit?: number; skip?: number }): Promise<{\n errors: CCAP_ErrorListItem_Response[];\n /**\n * BUG-ERR-COUNT-CAP-001 (cycle 436): a paginált válasz `total` mezője —\n * a teljes szervert szám, nem a lekért lap mérete. A main-menu badge\n * ezt használja, hogy 30/100 cap helyett a tényleges error-szám látszódjon.\n */\n total: number;\n }> {\n const pageSize: number = params?.limit ?? DEFAULT_PAGE_SIZE;\n const pageIndex: number = params?.skip\n ? Math.floor(params.skip / pageSize)\n : 0;\n\n const url: string =\n `${this.baseUrl}/error/get-last-paged/month/${pageSize}/${pageIndex}`;\n\n return firstValueFrom(\n this.http.get<DyFM_Paged<CCAP_DyNTSErrorRecord_Response>>(url).pipe(\n map((paged: DyFM_Paged<CCAP_DyNTSErrorRecord_Response>): {\n errors: CCAP_ErrorListItem_Response[];\n total: number;\n } => ({\n errors: (paged.items ?? []).map(\n (rec: CCAP_DyNTSErrorRecord_Response): CCAP_ErrorListItem_Response =>\n Errors_ApiService.mapRecordToListItem(rec),\n ),\n total: typeof paged.total === 'number' ? paged.total : 0,\n })),\n ),\n );\n }\n\n /**\n * Cycle 780: fix-annotation registry lekérdezése (REQ-SYS-EH-FIX-ANNOTATION-001).\n * GET /api/errors/fix-annotations → `{ total, annotations: [{ errorCode, fixedInVersion, ... }] }`.\n * A data-service ebből egy `errorCode → annotation` Map-et épít, és minden\n * error-rekordra kiszámolja a klasszifikációt (STALE-BUILD / REGRESSION / UNFIXED).\n */\n listFixAnnotations(): Promise<CCAP_FixAnnotation_Response[]> {\n return firstValueFrom(\n this.http.get<{ total: number; annotations: CCAP_FixAnnotation_Response[] }>(\n `${this.baseUrl}/fix-annotations`,\n ).pipe(\n map((resp: { annotations: CCAP_FixAnnotation_Response[] }): CCAP_FixAnnotation_Response[] =>\n resp.annotations ?? [],\n ),\n ),\n );\n }\n\n /**\n * Egy hiba törlése id alapján (DyNTS mark-done).\n */\n deleteError(id: string): Promise<void> {\n return firstValueFrom(\n this.http.get<unknown>(\n `${this.baseUrl}/error/mark-done/${id}`,\n ).pipe(map((): void => undefined)),\n );\n }\n\n /**\n * Összes hiba törlése (DyNTS mark-all-done).\n */\n deleteAllErrors(): Promise<void> {\n return firstValueFrom(\n this.http.get<unknown>(\n `${this.baseUrl}/error/mark-all-done`,\n ).pipe(map((): void => undefined)),\n );\n }\n\n /**\n * PM / user manuális megjelölés (POST /error/pm-user-mark/:errorId).\n */\n setPmUserMark(id: string, marked: boolean): Promise<{ pmUserMarkedAt: string | null }> {\n const trimmed: string = id.trim();\n return firstValueFrom(\n this.http.post<{ pmUserMarkedAt: string | null }>(\n `${this.baseUrl}/error/pm-user-mark/${encodeURIComponent(trimmed)}`,\n { marked: marked },\n ),\n );\n }\n\n /**\n * Kliens által jelentett hiba küldése a szervernek (DyNTS error/new).\n * A payload-ot DyFM_Errors formátumra alakítja.\n */\n reportError(\n payload: Err_Report_Request,\n ): Promise<{ recorded: boolean }> {\n // -- errorCode prefix a message-be, ha van (azonosítható a hibalistában) --\n const messageWithCode: string = payload.errorCode\n ? `[${payload.errorCode}] ${payload.message}`\n : payload.message;\n // -- surroundingState: client context + error additionalContent merge --\n const surroundingState: Record<string, unknown> = {\n ...(payload.clientContext ?? {}),\n ...(payload.errorAdditionalContent != null ? payload.errorAdditionalContent : {}),\n };\n // -- additionalContent felépítése: csak meglévő mezőkkel --\n const additionalContent: Record<string, unknown> = {\n sessionId: payload.sessionId,\n runId: payload.runId,\n surroundingState: surroundingState,\n };\n if (payload.errorCode) {\n additionalContent.errorCode = payload.errorCode;\n }\n const body: Record<string, unknown> = {\n message: messageWithCode,\n source: payload.source,\n stackTrace: payload.stack\n ? payload.stack.split('\\n')\n : [],\n additionalContent: additionalContent,\n };\n\n return firstValueFrom(\n this.http.post<unknown>(\n `${this.baseUrl}/error/new`,\n body,\n ).pipe(\n map((): { recorded: boolean } => ({ recorded: true })),\n ),\n );\n }\n\n /**\n * DyNTS DyFM_Errors rekord -> CCAP_ErrorListItem_Response mapping.\n * sessionId / runId: root elsőbbség, majd legacy additionalContent.\n */\n private static mapRecordToListItem(\n rec: CCAP_DyNTSErrorRecord_Response,\n ): CCAP_ErrorListItem_Response {\n const additional: Record<string, unknown> = ObjectTypeGuards_Util.isRecord(rec.additionalContent)\n ? rec.additionalContent\n : {};\n\n const surroundingRaw: unknown = additional.surroundingState;\n const surroundingState: Record<string, unknown> | undefined = ObjectTypeGuards_Util.isRecord(surroundingRaw)\n ? surroundingRaw\n : undefined;\n\n const sessionFromAdditional: string | undefined =\n Errors_ApiService.optionalNonEmptyString(additional.sessionId);\n const runFromAdditional: string | undefined =\n Errors_ApiService.optionalNonEmptyString(additional.runId);\n\n const pmMarked: string | undefined = Errors_ApiService.optionalNonEmptyString(\n additional[CCAP_ERRORS_PM_USER_MARKED_AT_KEY],\n );\n\n return {\n _id: rec._id,\n message: Errors_ApiService.resolveMessageFromRecord(rec),\n stack: Errors_ApiService.resolveStackTextFromRecord(rec),\n source: Errors_ApiService.resolveSourceFromRecord(rec),\n occurrenceCount: rec.count,\n lastOccurrenceAt: rec.__lastModified,\n timestamp: rec.__created,\n ccapId: Errors_ApiService.optionalNonEmptyString(rec.ccapId),\n sessionId:\n Errors_ApiService.optionalNonEmptyString(rec.sessionId) ?? sessionFromAdditional,\n runId: Errors_ApiService.optionalNonEmptyString(rec.runId) ?? runFromAdditional,\n surroundingState: surroundingState,\n pmUserMarkedAt: pmMarked,\n // Cycle 780 (REQ-SYS-EH-FIX-ANNOTATION-001) — versions + errorCode\n // továbbadása, hogy a data-service kiszámolhassa a klasszifikációt.\n versions: Errors_ApiService.extractVersions(rec.versions),\n errorCode: Errors_ApiService.optionalNonEmptyString(rec._errorCode),\n };\n }\n\n /**\n * Cycle 780: DyFM_Errors versions tömb normalizálása string[]-re.\n * A versions mező lehet `[\"SERVER-1.1.2469\", \"SERVER-1.1.2469\"]` vagy\n * `[\"SERVER-...\", { \"$push\": \"SERVER-...\" }]` (ritka legacy formátum).\n */\n private static extractVersions(raw: unknown): string[] {\n if (!Array.isArray(raw)) {\n return [];\n }\n const out: string[] = [];\n for (const item of raw) {\n if (typeof item === 'string' && item.length > 0) {\n out.push(item);\n continue;\n }\n if (ObjectTypeGuards_Util.isRecord(item)) {\n const pushed: unknown = item.$push;\n if (typeof pushed === 'string' && pushed.length > 0) {\n out.push(pushed);\n }\n }\n }\n return out;\n }\n\n /**\n * Hibalista cím (message): gyökér, _message, majd beágyazott error / d_error (legacy Mongo doc).\n */\n private static resolveMessageFromRecord(\n rec: CCAP_DyNTSErrorRecord_Response,\n ): string | undefined {\n const fromRoot: string | undefined = Errors_ApiService.optionalNonEmptyString(\n rec.message,\n );\n if (fromRoot != null) {\n return fromRoot;\n }\n const fromUnderscore: string | undefined = Errors_ApiService.optionalNonEmptyString(\n rec._message,\n );\n if (fromUnderscore != null) {\n return fromUnderscore;\n }\n const fromErrorNested: string | undefined =\n Errors_ApiService.optionalNonEmptyString(\n Errors_ApiService.readMessageFromErrorLikeUnknown(rec.error),\n ) ??\n Errors_ApiService.optionalNonEmptyString(\n Errors_ApiService.readMessageFromErrorLikeUnknown(rec.d_error),\n );\n return fromErrorNested;\n }\n\n /**\n * Forrás: gyökér source, majd ___issuerService (DyFM_Error-szerű / hibásan mentett sor).\n */\n private static resolveSourceFromRecord(\n rec: CCAP_DyNTSErrorRecord_Response,\n ): string | undefined {\n const fromSource: string | undefined = Errors_ApiService.optionalNonEmptyString(\n rec.source,\n );\n if (fromSource != null) {\n return fromSource;\n }\n return Errors_ApiService.optionalNonEmptyString(rec.___issuerService);\n }\n\n /**\n * Stack szöveg: stackTrace tömb/string, gyökér stack, majd nested error / d_error.stack.\n */\n private static resolveStackTextFromRecord(\n rec: CCAP_DyNTSErrorRecord_Response,\n ): string | undefined {\n const traceUnknown: unknown = rec.stackTrace;\n if (typeof traceUnknown === 'string' && traceUnknown.trim().length > 0) {\n return traceUnknown.trim();\n }\n const fromLines: string | undefined =\n Array.isArray(traceUnknown) && traceUnknown.length > 0\n ? traceUnknown.join('\\n')\n : undefined;\n if (fromLines != null && fromLines.trim().length > 0) {\n return fromLines;\n }\n if (typeof rec.stack === 'string' && rec.stack.trim().length > 0) {\n return rec.stack;\n }\n const fromNestedError: string | undefined = Errors_ApiService.optionalNonEmptyString(\n Errors_ApiService.readStackFromErrorLikeUnknown(rec.error),\n );\n if (fromNestedError != null) {\n return fromNestedError;\n }\n return Errors_ApiService.optionalNonEmptyString(\n Errors_ApiService.readStackFromErrorLikeUnknown(rec.d_error),\n );\n }\n\n /**\n * API-ból jövő lapos error-alak message / _message mezője.\n */\n private static readMessageFromErrorLikeUnknown(value: unknown): string | undefined {\n if (!ObjectTypeGuards_Util.isRecord(value)) {\n return undefined;\n }\n const msg: unknown = value.message;\n if (typeof msg === 'string' && msg.trim().length > 0) {\n return msg.trim();\n }\n const under: unknown = value._message;\n if (typeof under === 'string' && under.trim().length > 0) {\n return under.trim();\n }\n return undefined;\n }\n\n /**\n * API-ból jövő lapos error-alak stack string mezője.\n */\n private static readStackFromErrorLikeUnknown(value: unknown): string | undefined {\n if (!ObjectTypeGuards_Util.isRecord(value)) {\n return undefined;\n }\n const st: unknown = value.stack;\n if (typeof st === 'string' && st.trim().length > 0) {\n return st.trim();\n }\n return undefined;\n }\n\n /**\n * Nem üres string kiolvasása unknown értékből (API / Mongo mezők); egyébként undefined.\n */\n private static optionalNonEmptyString(value: unknown): string | undefined {\n if (typeof value !== 'string') {\n return undefined;\n }\n const trimmed: string = value.trim();\n if (!trimmed.length) {\n return undefined;\n }\n return trimmed;\n }\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["CCAP_NG0600_ROUTE_FEATURE_HINTS", "prefix", "hint", "NG0203_MESSAGE", "CCAP_Ng0203Diagnostic_Util", "isNg0203Message", "message", "trim", "buildDiagnostics", "params", "clientSnapshot", "route", "context", "url", "userAgent", "timestamp", "stackFrames", "parseStackFrames", "stack", "routeFeatureHints", "resolveRouteFeatureHints", "staticGuidance", "buildStaticGuidance", "toolSteps", "buildToolSteps", "clientSource", "summary", "formatDiagnosticsAppendix", "diagnostics", "json", "JSON", "stringify", "lines", "split", "map", "l", "filter", "length", "frames", "line", "parsed", "tryParseStackLine", "push", "parenMatch", "match", "urlPart", "looksLikeUrlWithLineCol", "loc", "parseUrlLineCol", "rawLine", "column", "bundleHint", "bundleHintFromUrl", "atMatch", "token", "s", "test", "includes", "re", "m", "Number", "parseInt", "isFinite", "lower", "toLowerCase", "endsWith", "normalized", "startsWith", "sorted", "CCAP_NG0600_ROUTE_FEATURE_HINTS", "sort", "a", "b", "prefix", "entry", "hint", "dash", "find", "e", "steps", "id", "label", "detail", "frameSummary", "slice", "f", "parts", "String", "join", "NG0600_MESSAGE", "CCAP_Ng0600Diagnostic_Util", "isNg0600Message", "message", "trim", "buildDiagnostics", "params", "clientSnapshot", "route", "context", "url", "userAgent", "timestamp", "stackFrames", "parseStackFrames", "stack", "routeFeatureHints", "resolveRouteFeatureHints", "staticGuidance", "buildStaticGuidance", "toolSteps", "buildToolSteps", "clientSource", "summary", "formatDiagnosticsAppendix", "diagnostics", "json", "JSON", "stringify", "lines", "split", "map", "l", "filter", "length", "frames", "line", "parsed", "tryParseStackLine", "push", "parenMatch", "match", "urlPart", "looksLikeUrlWithLineCol", "loc", "parseUrlLineCol", "rawLine", "column", "bundleHint", "bundleHintFromUrl", "atMatch", "token", "s", "test", "includes", "re", "m", "Number", "parseInt", "isFinite", "lower", "toLowerCase", "endsWith", "normalized", "startsWith", "sorted", "CCAP_NG0600_ROUTE_FEATURE_HINTS", "sort", "a", "b", "prefix", "entry", "hint", "dash", "find", "e", "steps", "id", "label", "detail", "frameSummary", "slice", "f", "parts", "String", "join", "ObjectTypeGuards_Util", "isRecord", "x", "Array", "isArray", "CCAP_CURSOR_CLI_DOCS_INSTALLATION_HREF", "CCAP_CURSOR_CLI_DOCS_USING_HREF", "CCAP_CURSOR_CLI_INSTALL_PAGE_HREF", "tryReadDyfmErrorCodeFromBody", "body", "ObjectTypeGuards_Util", "isRecord", "raw", "_errorCode", "trim", "length", "CCAP_HttpErrorTroubleshootingHint_Util", "tryGetHintForUnknownError", "params", "error", "HttpErrorResponse", "code", "hintForCaAgentErrorCode", "errorCode", "tryGetShortNotificationAffix", "commonLinks", "cursorCliDocLinks", "heading", "bodyLines", "links", "label", "href", "CCAP_CURSOR_CLI_DOCS_INSTALLATION_HREF", "CCAP_CURSOR_CLI_DOCS_USING_HREF", "CCAP_CURSOR_CLI_INSTALL_PAGE_HREF", "import_fsm_dynamo", "FALLBACK_ERROR_MESSAGE", "FULL_MESSAGE_MAX_DEPTH", "getBodyMessageFromErrorResponse", "body", "ObjectTypeGuards_Util", "isRecord", "_message", "trim", "error", "message", "nested", "getSingleErrorMessage", "HttpErrorResponse", "bodyMessage", "CCAP_HttpErrorMessage_Util", "getHttpErrorMessage", "getMsg", "DyFM_Error", "getErrorMessage", "msg", "Error", "String", "detail", "json", "JSON", "stringify", "getDirectDyFmChildErrorClient", "isDyFMError", "dynamoErr", "arr", "errors", "Array", "isArray", "length", "last", "getNestedError", "fromDyFm", "fromError", "Blob", "c", "cause", "tryGetLocalStackBlock", "ls", "__localStack", "getSingleStackString", "stack", "collectStackSectionsForReport", "depth", "chunks", "localBlock", "push", "stackStr", "CCAP_ErrorDisplay_Util", "getFullErrorMessageForDisplay", "maxDepth", "base", "trimmed", "causedByPrefix", "startsWith", "toDisplaySafeString", "value", "t", "getErrorMessageForDisplay", "getStackForReport", "joined", "join", "import_fsm_dynamo", "CCAP_SocketTransportErrorNoiseMessage_Util", "matchesDisplayMessage", "message", "m", "trim", "toLowerCase", "length", "includes", "CCAP_ERRORS_PM_USER_MARKED_AT_KEY", "DEFAULT_PAGE_SIZE", "Errors_ApiService", "baseUrl", "environment", "api", "http", "inject", "HttpClient", "listErrors", "params", "pageSize", "limit", "pageIndex", "skip", "Math", "floor", "url", "firstValueFrom", "get", "pipe", "map", "paged", "errors", "items", "rec", "mapRecordToListItem", "total", "listFixAnnotations", "resp", "annotations", "deleteError", "id", "deleteAllErrors", "setPmUserMark", "marked", "trimmed", "trim", "post", "
|
|
4
|
+
"sourcesContent": ["/**\n * Route prefix (Router.url) → CCAP feature / forrásmappa tipp NG0600 diagnózishoz.\n * SSOT: app.routing-module.ts top-level path-ok.\n */\nexport const CCAP_NG0600_ROUTE_FEATURE_HINTS: readonly { prefix: string; hint: string }[] = [\n { prefix: '/setup', hint: 'Setup — client/src/app/_modules/config/_modules/setup/' },\n { prefix: '/settings', hint: 'Settings — client/src/app/_modules/config/_modules/settings/' },\n { prefix: '/model-registry', hint: 'Model registry — client/src/app/_modules/model-registry/' },\n { prefix: '/embedding-registry', hint: 'Embedding registry — client/src/app/_modules/ai-systems/_modules/embedding-registry/' },\n { prefix: '/embedding-eval', hint: 'Embedding eval — client/src/app/_modules/embedding-eval/' },\n { prefix: '/session', hint: 'CCAP Session UI — client/src/app/_modules/session/' },\n { prefix: '/errors', hint: 'Errors list — client/src/app/_modules/system/_modules/errors/' },\n { prefix: '/feedback', hint: 'Feedback — client/src/app/_modules/feedback/' },\n { prefix: '/logs', hint: 'Logs — client/src/app/_modules/dev/_modules/devtools/_modules/logs/' },\n { prefix: '/host-runtime-mcp', hint: 'Host runtime MCP — client/src/app/_modules/dev/_modules/host-runtime-mcp/' },\n { prefix: '/voice-notes-poc', hint: 'Voice notes POC — client/src/app/_modules/dev/_modules/poc/voice-notes-poc/' },\n { prefix: '/master-control-remote-poc', hint: 'Master control remote POC — client/src/app/_modules/dev/_modules/poc/master-control-remote-poc/' },\n { prefix: '/workflow-settings', hint: 'Workflow settings — client/src/app/_modules/config/_modules/workflow-settings/' },\n { prefix: '/coordinator', hint: 'Coordinator — client/src/app/_modules/coordinator/' },\n { prefix: '/dark-office', hint: 'Dark Office — client/src/app/_modules/dark-office/' },\n { prefix: '/project-management', hint: 'Project management — client/src/app/_modules/project-management/' },\n { prefix: '/cc-session', hint: 'CC Session UI — client/src/app/_modules/cc-session/' },\n { prefix: '/mobile-app', hint: 'Mobile app — client/src/app/_modules/dev/_modules/poc/mobile-app/' },\n { prefix: '/oc-session', hint: 'OC Session — client/src/app/_modules/oc/' },\n { prefix: '/ca-session', hint: 'CA Session — client/src/app/_modules/ca-session/' },\n { prefix: '/consultant', hint: 'Consultant — client/src/app/_modules/consultant/' },\n { prefix: '/agent-instances', hint: 'Agent instances — client/src/app/_modules/agent-instances/' },\n { prefix: '/terminals', hint: 'Terminals — client/src/app/_modules/dev/_modules/devtools/_modules/terminals/' },\n {\n prefix: '/live-development-pipeline',\n hint: 'Live Development Pipeline — client/src/app/_modules/dev/_modules/devtools/_modules/live-dev-pipeline/',\n },\n {\n prefix: '/system-status',\n hint: 'Legacy route → redirects to /live-development-pipeline — client/src/app/_modules/dev/_modules/devtools/_modules/live-dev-pipeline/',\n },\n { prefix: '/', hint: 'Dashboard (root) — client/src/app/_modules/dashboard/' },\n];\n", "import { CCAP_NG0600_ROUTE_FEATURE_HINTS } from './ng0600-route-to-feature-hints.const';\nimport {\n CCAP_Ng0203DiagnosticResult_Interface,\n} from '../../_models/interfaces/feedback-errors/ccap-ng0203-diagnostic-result.interface';\nimport {\n CCAP_Ng0600BundleHint_Type,\n CCAP_Ng0600ClientSnapshot_Interface,\n CCAP_Ng0600StackFrame_Interface,\n CCAP_Ng0600ToolStep_Interface,\n} from '../../_models/interfaces/feedback-errors/ccap-ng0600-diagnostic-result.interface';\n\n/** NG0203 üzenet szigorú egyezés a globális error pipeline-lal. */\nconst NG0203_MESSAGE: string = 'NG0203';\n\n/**\n * Angular NG0203: inject() injection context-en kívül — diagnosztika (stack, route tipp, útmutató).\n * Szinkron, nincs side effect; stack parse regex alapú (NG0600 util-lal azonos parse logika).\n */\nexport class CCAP_Ng0203Diagnostic_Util {\n\n /**\n * Üzenet alapján NG0203-e (getErrorMessageForDisplay eredményéhez igazítva).\n */\n static isNg0203Message(message: string): boolean {\n return message.trim() === NG0203_MESSAGE;\n }\n\n /**\n * Diagnosztikai objektum építése: kliens kontextus, stack frame-ek, route tipp, útmutató.\n */\n static buildDiagnostics(params: {\n stack?: string;\n context: CCAP_Ng0600ClientSnapshot_Interface;\n clientSource?: string;\n }): CCAP_Ng0203DiagnosticResult_Interface {\n const clientSnapshot: CCAP_Ng0600ClientSnapshot_Interface = {\n route: params.context.route,\n url: params.context.url,\n userAgent: params.context.userAgent,\n timestamp: params.context.timestamp,\n };\n const stackFrames: CCAP_Ng0600StackFrame_Interface[] =\n CCAP_Ng0203Diagnostic_Util.parseStackFrames(params.stack);\n const route: string = typeof params.context.route === 'string' ? params.context.route : '';\n const routeFeatureHints: string[] = CCAP_Ng0203Diagnostic_Util.resolveRouteFeatureHints(route);\n const staticGuidance: string[] = CCAP_Ng0203Diagnostic_Util.buildStaticGuidance();\n const toolSteps: CCAP_Ng0600ToolStep_Interface[] = CCAP_Ng0203Diagnostic_Util.buildToolSteps({\n clientSnapshot: clientSnapshot,\n clientSource: params.clientSource,\n stackFrames: stackFrames,\n routeFeatureHints: routeFeatureHints,\n });\n return {\n summary:\n 'Angular NG0203: inject() was called outside an injection context (constructor, field initializer, factory, or runInInjectionContext).',\n clientSource: params.clientSource,\n clientSnapshot: clientSnapshot,\n stackFrames: stackFrames,\n routeFeatureHints: routeFeatureHints,\n staticGuidance: staticGuidance,\n toolSteps: toolSteps,\n };\n }\n\n /**\n * Report stack végére fűzhető appendix (JSON), hogy a hibalista is tartalmazza.\n */\n static formatDiagnosticsAppendix(diagnostics: CCAP_Ng0203DiagnosticResult_Interface): string {\n let json: string;\n try {\n json = JSON.stringify(diagnostics, null, 2);\n } catch {\n json = '{\"ng0203Diagnostics\":\"JSON stringify failed\"}';\n }\n return `\\n\\n[NG0203 diagnostics]\\n${json}`;\n }\n\n /**\n * Stack szöveg feldarabolása frame-ekre; URL + sor/oszlop kinyerése.\n */\n private static parseStackFrames(stack: string | undefined): CCAP_Ng0600StackFrame_Interface[] {\n if (stack == null || !stack.trim()) {\n return [];\n }\n const lines: string[] = stack.split('\\n').map((l: string): string => l.trim()).filter(\n (l: string): boolean => l.length > 0,\n );\n const frames: CCAP_Ng0600StackFrame_Interface[] = [];\n for (const line of lines) {\n const parsed: CCAP_Ng0600StackFrame_Interface | null =\n CCAP_Ng0203Diagnostic_Util.tryParseStackLine(line);\n if (parsed != null) {\n frames.push(parsed);\n }\n }\n return frames;\n }\n\n /**\n * Egy stack sor parse: `at fn (url:line:col)` vagy `at url:line:col`.\n */\n private static tryParseStackLine(line: string): CCAP_Ng0600StackFrame_Interface | null {\n const parenMatch: RegExpMatchArray | null = line.match(/\\(([^)]+)\\)\\s*$/);\n const urlPart: string | null =\n parenMatch != null && parenMatch[1] != null ? parenMatch[1].trim() : null;\n if (urlPart != null && CCAP_Ng0203Diagnostic_Util.looksLikeUrlWithLineCol(urlPart)) {\n const loc = CCAP_Ng0203Diagnostic_Util.parseUrlLineCol(urlPart);\n if (loc != null) {\n return {\n rawLine: line,\n url: loc.url,\n line: loc.line,\n column: loc.column,\n bundleHint: CCAP_Ng0203Diagnostic_Util.bundleHintFromUrl(loc.url),\n };\n }\n }\n const atMatch: RegExpMatchArray | null = line.match(/\\bat\\s+(\\S+)\\s*$/);\n if (atMatch != null && atMatch[1] != null) {\n const token: string = atMatch[1].trim();\n if (CCAP_Ng0203Diagnostic_Util.looksLikeUrlWithLineCol(token)) {\n const loc = CCAP_Ng0203Diagnostic_Util.parseUrlLineCol(token);\n if (loc != null) {\n return {\n rawLine: line,\n url: loc.url,\n line: loc.line,\n column: loc.column,\n bundleHint: CCAP_Ng0203Diagnostic_Util.bundleHintFromUrl(loc.url),\n };\n }\n }\n }\n return {\n rawLine: line,\n bundleHint: 'other',\n };\n }\n\n private static looksLikeUrlWithLineCol(s: string): boolean {\n return /^https?:\\/\\//.test(s) || s.includes('.js:');\n }\n\n private static parseUrlLineCol(s: string): { url: string; line: number; column: number } | null {\n const re: RegExp = /^(.+):(\\d+):(\\d+)$/;\n const m: RegExpMatchArray | null = s.match(re);\n if (m == null || m[1] == null || m[2] == null || m[3] == null) {\n return null;\n }\n const url: string = m[1];\n const line: number = Number.parseInt(m[2], 10);\n const column: number = Number.parseInt(m[3], 10);\n if (!Number.isFinite(line) || !Number.isFinite(column)) {\n return null;\n }\n return { url: url, line: line, column: column };\n }\n\n private static bundleHintFromUrl(url: string): CCAP_Ng0600BundleHint_Type {\n const lower: string = url.toLowerCase();\n if (lower.includes('main-') && lower.endsWith('.js')) {\n return 'main';\n }\n if (lower.includes('chunk-') || lower.includes('chunk.')) {\n return 'chunk';\n }\n return 'other';\n }\n\n /**\n * Leghosszabb illeszkedő route prefix egy tipp (dashboard csak üres vagy / route-ra).\n */\n private static resolveRouteFeatureHints(route: string): string[] {\n const normalized: string = route.startsWith('/') ? route : (route.length > 0 ? `/${route}` : '');\n const sorted: { prefix: string; hint: string }[] = [...CCAP_NG0600_ROUTE_FEATURE_HINTS].sort(\n (a: { prefix: string; hint: string }, b: { prefix: string; hint: string }): number =>\n b.prefix.length - a.prefix.length,\n );\n for (const entry of sorted) {\n if (entry.prefix === '/') {\n continue;\n }\n if (normalized === entry.prefix || normalized.startsWith(`${entry.prefix}/`)) {\n return [entry.hint];\n }\n }\n if (normalized === '' || normalized === '/') {\n const dash: { prefix: string; hint: string } | undefined = CCAP_NG0600_ROUTE_FEATURE_HINTS.find(\n (e: { prefix: string; hint: string }): boolean => e.prefix === '/',\n );\n if (dash != null) {\n return [dash.hint];\n }\n }\n return [];\n }\n\n private static buildStaticGuidance(): string[] {\n return [\n 'inject() is only valid while Angular constructs the class (constructor / field initializers), in a provider useFactory, or inside runInInjectionContext(injector, fn).',\n 'If the stack shows ngOnInit (or another lifecycle hook), move inject() or APIs that call it (toSignal, input in wrong place) into a field initializer or constructor.',\n 'Capture Injector in the constructor (private readonly injector = inject(Injector)) and use runInInjectionContext for deferred work that must resolve tokens.',\n 'Official reference: https://angular.dev/errors/NG0203',\n ];\n }\n\n private static buildToolSteps(params: {\n clientSnapshot: CCAP_Ng0600ClientSnapshot_Interface;\n clientSource?: string;\n stackFrames: CCAP_Ng0600StackFrame_Interface[];\n routeFeatureHints: string[];\n }): CCAP_Ng0600ToolStep_Interface[] {\n const steps: CCAP_Ng0600ToolStep_Interface[] = [];\n steps.push({\n id: 'clientContext',\n label: 'Client context',\n detail: JSON.stringify(params.clientSnapshot, null, 2),\n });\n steps.push({\n id: 'showErrorSource',\n label: 'showError source',\n detail:\n params.clientSource != null && params.clientSource.trim().length > 0\n ? params.clientSource.trim()\n : '(not provided — global ErrorHandler or direct showError without source string)',\n });\n const frameSummary: string =\n params.stackFrames.length > 0\n ? params.stackFrames\n .slice(0, 8)\n .map((f: CCAP_Ng0600StackFrame_Interface): string => {\n const parts: string[] = [f.bundleHint];\n if (f.url != null) {\n parts.push(f.url);\n }\n if (f.line != null) {\n parts.push(`line ${String(f.line)}`);\n }\n return `${f.rawLine}\\n → ${parts.join(' | ')}`;\n })\n .join('\\n\\n')\n : '(no stack frames parsed)';\n steps.push({\n id: 'stackFrameExtraction',\n label: 'Stack frames (parsed)',\n detail: frameSummary,\n });\n steps.push({\n id: 'ngOnInitHint',\n label: 'Lifecycle hook hint',\n detail:\n 'If you see ngOnInit in the stack, search the corresponding component/service for inject() or helpers that call inject() (toSignal, etc.) inside that hook — relocate to constructor or field initializer.',\n });\n steps.push({\n id: 'routeToFeatureHint',\n label: 'Route → feature hint',\n detail:\n params.routeFeatureHints.length > 0\n ? params.routeFeatureHints.join('\\n')\n : '(no matching app route prefix — check Router.url manually)',\n });\n steps.push({\n id: 'staticGuidance',\n label: 'Static guidance',\n detail: CCAP_Ng0203Diagnostic_Util.buildStaticGuidance().join('\\n'),\n });\n return steps;\n }\n}\n", "import { CCAP_NG0600_ROUTE_FEATURE_HINTS } from './ng0600-route-to-feature-hints.const';\nimport {\n CCAP_Ng0600BundleHint_Type,\n CCAP_Ng0600ClientSnapshot_Interface,\n CCAP_Ng0600DiagnosticResult_Interface,\n CCAP_Ng0600StackFrame_Interface,\n CCAP_Ng0600ToolStep_Interface,\n} from '../../_models/interfaces/feedback-errors/ccap-ng0600-diagnostic-result.interface';\n\n/** NG0600 üzenet szigorú egyezés a globális error pipeline-lal. */\nconst NG0600_MESSAGE: string = 'NG0600';\n\n/**\n * Angular NG0600: signal write reaktív kontextusban — diagnosztikai adatok összeállítása.\n * Szinkron, nincs side effect; stack parse regex alapú.\n */\nexport class CCAP_Ng0600Diagnostic_Util {\n\n /**\n * Üzenet alapján NG0600-e (getErrorMessageForDisplay eredményéhez igazítva).\n */\n static isNg0600Message(message: string): boolean {\n return message.trim() === NG0600_MESSAGE;\n }\n\n /**\n * Diagnosztikai objektum építése: kliens kontextus, source, stack frame-ek, route tipp, útmutató.\n */\n static buildDiagnostics(params: {\n stack?: string;\n context: CCAP_Ng0600ClientSnapshot_Interface;\n clientSource?: string;\n }): CCAP_Ng0600DiagnosticResult_Interface {\n const clientSnapshot: CCAP_Ng0600ClientSnapshot_Interface = {\n route: params.context.route,\n url: params.context.url,\n userAgent: params.context.userAgent,\n timestamp: params.context.timestamp,\n };\n const stackFrames: CCAP_Ng0600StackFrame_Interface[] =\n CCAP_Ng0600Diagnostic_Util.parseStackFrames(params.stack);\n const route: string = typeof params.context.route === 'string' ? params.context.route : '';\n const routeFeatureHints: string[] = CCAP_Ng0600Diagnostic_Util.resolveRouteFeatureHints(route);\n const staticGuidance: string[] = CCAP_Ng0600Diagnostic_Util.buildStaticGuidance();\n const toolSteps: CCAP_Ng0600ToolStep_Interface[] = CCAP_Ng0600Diagnostic_Util.buildToolSteps({\n clientSnapshot: clientSnapshot,\n clientSource: params.clientSource,\n stackFrames: stackFrames,\n routeFeatureHints: routeFeatureHints,\n });\n return {\n summary:\n 'Angular NG0600: signal write inside reactive context (computed, effect, or template).',\n clientSource: params.clientSource,\n clientSnapshot: clientSnapshot,\n stackFrames: stackFrames,\n routeFeatureHints: routeFeatureHints,\n staticGuidance: staticGuidance,\n toolSteps: toolSteps,\n };\n }\n\n /**\n * Report stack végére fűzhető appendix (JSON), hogy a hibalista is tartalmazza.\n */\n static formatDiagnosticsAppendix(diagnostics: CCAP_Ng0600DiagnosticResult_Interface): string {\n let json: string;\n try {\n json = JSON.stringify(diagnostics, null, 2);\n } catch {\n json = '{\"ng0600Diagnostics\":\"JSON stringify failed\"}';\n }\n return `\\n\\n[NG0600 diagnostics]\\n${json}`;\n }\n\n /**\n * Stack szöveg feldarabolása frame-ekre; URL + sor/oszlop kinyerése.\n */\n private static parseStackFrames(stack: string | undefined): CCAP_Ng0600StackFrame_Interface[] {\n if (stack == null || !stack.trim()) {\n return [];\n }\n const lines: string[] = stack.split('\\n').map((l: string): string => l.trim()).filter(\n (l: string): boolean => l.length > 0,\n );\n const frames: CCAP_Ng0600StackFrame_Interface[] = [];\n for (const line of lines) {\n const parsed: CCAP_Ng0600StackFrame_Interface | null =\n CCAP_Ng0600Diagnostic_Util.tryParseStackLine(line);\n if (parsed != null) {\n frames.push(parsed);\n }\n }\n return frames;\n }\n\n /**\n * Egy stack sor parse: `at fn (url:line:col)` vagy `at url:line:col`.\n */\n private static tryParseStackLine(line: string): CCAP_Ng0600StackFrame_Interface | null {\n // Chrome: at name (https://host/path/file.js:225:109561)\n const parenMatch: RegExpMatchArray | null = line.match(/\\(([^)]+)\\)\\s*$/);\n const urlPart: string | null =\n parenMatch != null && parenMatch[1] != null ? parenMatch[1].trim() : null;\n if (urlPart != null && CCAP_Ng0600Diagnostic_Util.looksLikeUrlWithLineCol(urlPart)) {\n const loc = CCAP_Ng0600Diagnostic_Util.parseUrlLineCol(urlPart);\n if (loc != null) {\n return {\n rawLine: line,\n url: loc.url,\n line: loc.line,\n column: loc.column,\n bundleHint: CCAP_Ng0600Diagnostic_Util.bundleHintFromUrl(loc.url),\n };\n }\n }\n // at https://host/path/file.js:225:109561\n const atMatch: RegExpMatchArray | null = line.match(/\\bat\\s+(\\S+)\\s*$/);\n if (atMatch != null && atMatch[1] != null) {\n const token: string = atMatch[1].trim();\n if (CCAP_Ng0600Diagnostic_Util.looksLikeUrlWithLineCol(token)) {\n const loc = CCAP_Ng0600Diagnostic_Util.parseUrlLineCol(token);\n if (loc != null) {\n return {\n rawLine: line,\n url: loc.url,\n line: loc.line,\n column: loc.column,\n bundleHint: CCAP_Ng0600Diagnostic_Util.bundleHintFromUrl(loc.url),\n };\n }\n }\n }\n return {\n rawLine: line,\n bundleHint: 'other',\n };\n }\n\n private static looksLikeUrlWithLineCol(s: string): boolean {\n return /^https?:\\/\\//.test(s) || s.includes('.js:');\n }\n\n private static parseUrlLineCol(s: string): { url: string; line: number; column: number } | null {\n // .../file.js:225:109561 — utolsó két : után számok\n const re: RegExp = /^(.+):(\\d+):(\\d+)$/;\n const m: RegExpMatchArray | null = s.match(re);\n if (m == null || m[1] == null || m[2] == null || m[3] == null) {\n return null;\n }\n const url: string = m[1];\n const line: number = Number.parseInt(m[2], 10);\n const column: number = Number.parseInt(m[3], 10);\n if (!Number.isFinite(line) || !Number.isFinite(column)) {\n return null;\n }\n return { url: url, line: line, column: column };\n }\n\n private static bundleHintFromUrl(url: string): CCAP_Ng0600BundleHint_Type {\n const lower: string = url.toLowerCase();\n if (lower.includes('main-') && lower.endsWith('.js')) {\n return 'main';\n }\n if (lower.includes('chunk-') || lower.includes('chunk.')) {\n return 'chunk';\n }\n return 'other';\n }\n\n /**\n * Leghosszabb illeszkedő route prefix egy tipp (dashboard csak üres vagy / route-ra).\n */\n private static resolveRouteFeatureHints(route: string): string[] {\n const normalized: string = route.startsWith('/') ? route : (route.length > 0 ? `/${route}` : '');\n const sorted: { prefix: string; hint: string }[] = [...CCAP_NG0600_ROUTE_FEATURE_HINTS].sort(\n (a: { prefix: string; hint: string }, b: { prefix: string; hint: string }): number =>\n b.prefix.length - a.prefix.length,\n );\n for (const entry of sorted) {\n if (entry.prefix === '/') {\n continue;\n }\n if (normalized === entry.prefix || normalized.startsWith(`${entry.prefix}/`)) {\n return [entry.hint];\n }\n }\n if (normalized === '' || normalized === '/') {\n const dash: { prefix: string; hint: string } | undefined = CCAP_NG0600_ROUTE_FEATURE_HINTS.find(\n (e: { prefix: string; hint: string }): boolean => e.prefix === '/',\n );\n if (dash != null) {\n return [dash.hint];\n }\n }\n return [];\n }\n\n private static buildStaticGuidance(): string[] {\n return [\n 'Locate a .set(), .update(), or WritableSignal assignment running inside a computed(), effect(), or template binding.',\n 'Defer the write with setTimeout(0) or queueMicrotask if it must run after the reactive cycle (see global showError pattern).',\n 'For legitimate writes inside an effect, pass { allowSignalWrites: true } to the effect options (use sparingly).',\n 'Avoid reading display-only computeds that build diagnostics inside another computed if that triggers extra stacks — keep diagnostics outside reactive context.',\n ];\n }\n\n private static buildToolSteps(params: {\n clientSnapshot: CCAP_Ng0600ClientSnapshot_Interface;\n clientSource?: string;\n stackFrames: CCAP_Ng0600StackFrame_Interface[];\n routeFeatureHints: string[];\n }): CCAP_Ng0600ToolStep_Interface[] {\n const steps: CCAP_Ng0600ToolStep_Interface[] = [];\n steps.push({\n id: 'clientContext',\n label: 'Client context',\n detail: JSON.stringify(params.clientSnapshot, null, 2),\n });\n steps.push({\n id: 'showErrorSource',\n label: 'showError source',\n detail:\n params.clientSource != null && params.clientSource.trim().length > 0\n ? params.clientSource.trim()\n : '(not provided — global ErrorHandler or direct showError without source string)',\n });\n const frameSummary: string =\n params.stackFrames.length > 0\n ? params.stackFrames\n .slice(0, 8)\n .map((f: CCAP_Ng0600StackFrame_Interface): string => {\n const parts: string[] = [f.bundleHint];\n if (f.url != null) {\n parts.push(f.url);\n }\n if (f.line != null) {\n parts.push(`line ${String(f.line)}`);\n }\n return `${f.rawLine}\\n → ${parts.join(' | ')}`;\n })\n .join('\\n\\n')\n : '(no stack frames parsed)';\n steps.push({\n id: 'stackFrameExtraction',\n label: 'Stack frames (parsed)',\n detail: frameSummary,\n });\n steps.push({\n id: 'routeToFeatureHint',\n label: 'Route → feature hint',\n detail:\n params.routeFeatureHints.length > 0\n ? params.routeFeatureHints.join('\\n')\n : '(no matching app route prefix — check Router.url manually)',\n });\n steps.push({\n id: 'staticGuidance',\n label: 'Static guidance',\n detail: CCAP_Ng0600Diagnostic_Util.buildStaticGuidance().join('\\n'),\n });\n return steps;\n }\n}\n", "/**\n * Objektum type guard util – statikus metódusokkal.\n */\nexport class ObjectTypeGuards_Util {\n /**\n * Type guard: az érték nem null, object típusú és nem tömb (Record-szerű objektum).\n * Használat: JSON parse / API body / error shape ellenőrzésnél 'as' cast helyett.\n */\n static isRecord(x: unknown): x is Record<string, unknown> {\n return x !== null && typeof x === 'object' && !Array.isArray(x);\n }\n}\n", "/**\n * Cursor Agent / CLI hivatalos dokumentáció és install oldal URL-ek (CA session troubleshooting).\n * Forrás: https://cursor.com/docs/cli/installation\n */\nexport const CCAP_CURSOR_CLI_DOCS_INSTALLATION_HREF: string = 'https://cursor.com/docs/cli/installation';\n\n/**\n * Cursor CLI használat (Agent a terminálban).\n */\nexport const CCAP_CURSOR_CLI_DOCS_USING_HREF: string = 'https://cursor.com/docs/cli/using';\n\n/**\n * Cursor install / letöltés landing (platform-specifikus script hivatkozások).\n */\nexport const CCAP_CURSOR_CLI_INSTALL_PAGE_HREF: string = 'https://cursor.com/install';\n", "import { HttpErrorResponse } from '@angular/common/http';\n\nimport { ObjectTypeGuards_Util } from '../utils/object-type-guards.util';\nimport {\n CCAP_CURSOR_CLI_DOCS_INSTALLATION_HREF,\n CCAP_CURSOR_CLI_DOCS_USING_HREF,\n CCAP_CURSOR_CLI_INSTALL_PAGE_HREF,\n} from './cursor-cli-agent-docs.const';\nimport {\n CCAP_ErrorTroubleshootingHint_Interface,\n CCAP_ErrorTroubleshootingLink_Interface,\n} from '../../_models/interfaces/ccap-error-troubleshooting-hint.interface';\n\n/**\n * HTTP válasz body-ból DyFM `_errorCode` kiolvasása (string).\n */\nfunction tryReadDyfmErrorCodeFromBody(body: unknown): string | null {\n if (!ObjectTypeGuards_Util.isRecord(body)) {\n return null;\n }\n const raw: unknown = body._errorCode;\n if (typeof raw !== 'string' || !raw.trim().length) {\n return null;\n }\n return raw.trim();\n}\n\n/**\n * CA session / Cursor ACP agent spawn hibákhoz troubleshooting szöveg és hivatalos Cursor doc linkek.\n * A szerver error message English marad; ez a blokc Hunglish user guidance.\n */\nexport class CCAP_HttpErrorTroubleshootingHint_Util {\n\n /**\n * HttpErrorResponse body alapján troubleshooting blokk, ha ismert kód.\n */\n static tryGetHintForUnknownError(params: { error: unknown }): CCAP_ErrorTroubleshootingHint_Interface | null {\n if (!(params.error instanceof HttpErrorResponse)) {\n return null;\n }\n const code: string | null = tryReadDyfmErrorCodeFromBody(params.error.error);\n if (code == null) {\n return null;\n }\n return CCAP_HttpErrorTroubleshootingHint_Util.hintForCaAgentErrorCode({ errorCode: code });\n }\n\n /**\n * Notification bubble-hoz rövid affix (egy sor); üres string ha nincs illeszkedés.\n */\n static tryGetShortNotificationAffix(params: { error: unknown }): string {\n if (!(params.error instanceof HttpErrorResponse)) {\n return '';\n }\n const code: string | null = tryReadDyfmErrorCodeFromBody(params.error.error);\n if (code == null) {\n return '';\n }\n if (code === 'CCAP-CAS-ACP-SPAWN-ENOENT') {\n return (\n ' — A szerver nem találja a Cursor Agent CLI-t (cursor-agent). '\n + 'Telepítés, PATH és Settings → CA Agent: nyisd meg a részleteket.'\n );\n }\n if (code === 'CCAP-CAS-ACP-MISSING-CMD') {\n return ' — CA Agent parancs üres. Állítsd be a Settings → CA Agent → Command mezőt.';\n }\n if (code === 'CCAP-CAS-ACP-SPAWN-ERROR') {\n return ' — CA Agent subprocess indítás sikertelen. Részletek a modálban.';\n }\n return '';\n }\n\n /**\n * DyFM error code → troubleshooting (CA agent / ACP spawn domain).\n */\n private static hintForCaAgentErrorCode(params: {\n errorCode: string;\n }): CCAP_ErrorTroubleshootingHint_Interface | null {\n const commonLinks = CCAP_HttpErrorTroubleshootingHint_Util.cursorCliDocLinks();\n if (params.errorCode === 'CCAP-CAS-ACP-SPAWN-ENOENT') {\n return {\n heading: 'Cursor Agent CLI nem található (ENOENT)',\n bodyLines: [\n 'A CCAP szerver a beállított executable-t a szerver Node process PATH változóján keresi '\n + '(alapértelmezett név: cursor-agent).',\n 'Ha a PowerShellben lefuttatod a telepítőt, de a cursor-agent parancs még mindig „not recognized”, '\n + 'a Windows User PATH frissülhet, de a már futó terminál / IDE nem látja — nyiss új terminált, '\n + 'vagy add hozzá manuálisan a PATH-hoz azt a könyvtárat, ahova a Cursor CLI települt.',\n 'A CCAP szervert ugyanabból a környezetből indítsd, ahol a cursor-agent elérhető '\n + '(ellenőrzés: ugyanabban a shellben where.exe cursor-agent vagy a parancs teljes path-ja).',\n 'Megoldás lehet teljes elérési út a Settings → CA Agent → Command mezőben, '\n + 'vagy a szerver processhez tartozó PATH bővítése.',\n 'Környezeti felülírás (szerver): CCAP_CA_SESSION_AGENT_COMMAND — részletek a szerver dokumentációban / '\n + 'ARCHITECTURE.',\n ],\n links: commonLinks,\n };\n }\n if (params.errorCode === 'CCAP-CAS-ACP-MISSING-CMD') {\n return {\n heading: 'CA Agent parancs nincs beállítva',\n bodyLines: [\n 'A ca-agent settings szekcióban a Command mező üres. Adj meg executable nevet vagy teljes path-ot '\n + '(pl. cursor-agent vagy a telepítő által létrehozott bináris elérési útja).',\n ],\n links: commonLinks,\n };\n }\n if (params.errorCode === 'CCAP-CAS-ACP-SPAWN-ERROR') {\n return {\n heading: 'CA Agent subprocess indítása sikertelen',\n bodyLines: [\n 'A spawn nem ENOENT, de az Agent process nem indult el rendesen. Ellenőrizd a parancsot, argumentumokat '\n + '(Args JSON tömb), és hogy a Cursor Agent CLI verziója támogatja-e az ACP stdio módot.',\n ],\n links: commonLinks,\n };\n }\n if (params.errorCode === 'CCAP-CAS-ACP-CHILD-EXIT') {\n return {\n heading: 'CA Agent kilépett az ACP handshake alatt',\n bodyLines: [\n 'A Cursor CLI alapból nem stdio ACP szervert indít — a hivatalos mód: `cursor-agent acp` (vagy `agent acp`). '\n + 'A CCAP üres Args mellett automatikusan hozzáfűzi az `acp` argumentumot a `cursor-agent` / `agent` '\n + 'parancsokhoz; egyéb binárisnál állítsd be kézzel az Args tömböt a Settings → CA Agent alatt.',\n 'Ha továbbra is exitCode=1: futtasd előbb `cursor-agent login` (vagy API kulcs / token env) ugyanazon '\n + 'felhasználóval, mint ahol a szervert indítod — az ACP `cursor_login` auth ehhez kell.',\n ],\n links: commonLinks,\n };\n }\n return null;\n }\n\n /**\n * Hivatalos Cursor dokumentáció linkek (install + CLI usage).\n */\n private static cursorCliDocLinks(): CCAP_ErrorTroubleshootingLink_Interface[] {\n return [\n { label: 'Cursor — CLI installation (docs)', href: CCAP_CURSOR_CLI_DOCS_INSTALLATION_HREF },\n { label: 'Cursor — Using Agent in CLI (docs)', href: CCAP_CURSOR_CLI_DOCS_USING_HREF },\n { label: 'Cursor — Install / download page', href: CCAP_CURSOR_CLI_INSTALL_PAGE_HREF },\n ];\n }\n}\n", "import { HttpErrorResponse } from '@angular/common/http';\n\nimport { DyFM_Error } from '@futdevpro/fsm-dynamo';\n\nimport { CCAP_HttpErrorMessage_Util } from './http-error-message.util';\nimport { ObjectTypeGuards_Util } from '../utils/object-type-guards.util';\n\n/** Fallback üzenet, ha objektumot nem sikerül értelmezhető stringre alakítani. */\nconst FALLBACK_ERROR_MESSAGE: string = 'Hiba történt (részletek a szerver logban).';\n\n/** Cause lánc rekurzió limit (kör referencia elkerülés). */\nconst FULL_MESSAGE_MAX_DEPTH: number = 10;\n\n/**\n * HTTP válasz body-ból kiolvasott üzenet (error / message mező).\n */\nfunction getBodyMessageFromErrorResponse(body: unknown): string | null {\n if (!ObjectTypeGuards_Util.isRecord(body)) {\n return typeof body === 'string' ? body : null;\n }\n // DyFM_Error response body: a framework res.send(error) a teljes DyFM_Error objektumot küldi,\n // ahol a fő üzenet _message-ben van (nem message-ben), és az error mező beágyazott error objektum.\n if (typeof body._message === 'string' && body._message.trim()) return body._message.trim();\n if (typeof body.error === 'string' && body.error.trim()) return body.error.trim();\n if (typeof body.message === 'string' && body.message.trim()) return body.message.trim();\n // Ha body['error'] objektum, ne String()-eljük (az \"[object Object]\" lenne).\n // Helyette rekurzívan kiolvassuk az üzenetét.\n if (body.error != null && typeof body.error === 'object') {\n const nested: string | null = getBodyMessageFromErrorResponse(body.error);\n if (nested) return nested;\n }\n return null;\n}\n\n/**\n * Egy szintű hibaüzenet kiolvasása (DyFM_Error.getErrorMessage vagy fallback).\n * HttpErrorResponse esetén a szerver body.error/message jelenik meg (getHttpErrorMessage).\n * Nem járja be a cause/error láncot.\n */\nfunction getSingleErrorMessage(error: unknown): string {\n if (error instanceof HttpErrorResponse) {\n const bodyMessage: string | null = getBodyMessageFromErrorResponse(error.error);\n return CCAP_HttpErrorMessage_Util.getHttpErrorMessage(error, bodyMessage);\n }\n try {\n const getMsg: ((e: unknown) => string) | undefined =\n (DyFM_Error as unknown as { getErrorMessage?: (e: unknown) => string }).getErrorMessage;\n if (typeof getMsg === 'function') {\n const msg: string = getMsg(error);\n if (msg && msg !== '[object Object]') {\n return msg;\n }\n }\n } catch {\n // fallback below\n }\n if (error instanceof Error) {\n return error.message || FALLBACK_ERROR_MESSAGE;\n }\n if (!ObjectTypeGuards_Util.isRecord(error)) {\n return String(error) || FALLBACK_ERROR_MESSAGE;\n }\n if (typeof error.message === 'string' && error.message.trim() && error.message !== '[object Object]') {\n return error.message;\n }\n if (typeof error.error === 'string' && error.error.trim() && error.error !== '[object Object]') {\n return error.error;\n }\n if (typeof error.detail === 'string' && error.detail.trim() && error.detail !== '[object Object]') {\n return error.detail;\n }\n try {\n const json: string = JSON.stringify(error);\n if (json && json !== '{}' && json !== '[object Object]') {\n return json;\n }\n } catch {\n // ignore\n }\n return FALLBACK_ERROR_MESSAGE;\n}\n\n/**\n * Nested hiba kiolvasása (wrapper .error vagy Error .cause).\n * Kör referencia esetén null.\n * Blob (pl. HTTP responseType: 'blob' body) esetén null, hogy ne jelenjen meg\n * \"— Caused by: Hiba történt (részletek...)\" — a valódi üzenet az error-display blob parsingból jön.\n */\nfunction getDirectDyFmChildErrorClient(error: unknown): unknown {\n if (!DyFM_Error.isDyFMError(error)) {\n return null;\n }\n const dynamoErr: DyFM_Error = error;\n const arr: unknown[] | undefined = dynamoErr.errors;\n if (Array.isArray(arr) && arr.length > 0) {\n const last: unknown = arr[arr.length - 1];\n if (last != null && last !== error) {\n return last;\n }\n }\n return dynamoErr.error;\n}\n\nfunction getNestedError(error: unknown): unknown {\n if (!ObjectTypeGuards_Util.isRecord(error)) {\n return null;\n }\n const fromDyFm: unknown = getDirectDyFmChildErrorClient(error);\n if (fromDyFm != null && fromDyFm !== error) {\n return fromDyFm;\n }\n const fromError: unknown = error.error;\n if (fromError != null && fromError !== error) {\n if (fromError instanceof Blob) {\n return null;\n }\n return fromError;\n }\n if (error instanceof Error && 'cause' in error) {\n const c: unknown = (error as Error & { cause?: unknown }).cause;\n if (c != null && c !== error) {\n return c;\n }\n }\n return null;\n}\n\n/**\n * __localStack sor DyFM / rekord alapú hibához (report összeállítás).\n */\nfunction tryGetLocalStackBlock(error: unknown): string | undefined {\n if (!ObjectTypeGuards_Util.isRecord(error)) {\n return undefined;\n }\n const ls: unknown = error.__localStack;\n if (ls == null || !String(ls).trim().length) {\n return undefined;\n }\n return `[__localStack]\\n${String(ls)}`;\n}\n\n/**\n * Egy láncszint stack stringje (Error.stack vagy rekord .stack).\n */\nfunction getSingleStackString(error: unknown): string | undefined {\n if (error instanceof Error && typeof error.stack === 'string' && error.stack.trim().length > 0) {\n return error.stack;\n }\n if (ObjectTypeGuards_Util.isRecord(error) && typeof error.stack === 'string' && error.stack.trim().length > 0) {\n return error.stack;\n }\n return undefined;\n}\n\n/**\n * Rekurzív stack szekciók (ugyanaz a lánc, mint getNestedError / üzenet), REQ-SYS-005-CAUSE.\n */\nfunction collectStackSectionsForReport(error: unknown, depth: number): string[] {\n if (error == null || depth <= 0) {\n return [];\n }\n const chunks: string[] = [];\n const localBlock: string | undefined = tryGetLocalStackBlock(error);\n if (localBlock != null) {\n chunks.push(localBlock);\n }\n const stackStr: string | undefined = getSingleStackString(error);\n if (stackStr != null) {\n chunks.push(stackStr);\n }\n const nested: unknown = getNestedError(error);\n if (nested == null) {\n return chunks;\n }\n chunks.push('');\n chunks.push('--- Caused by ---');\n chunks.push('');\n chunks.push(...collectStackSectionsForReport(nested, depth - 1));\n return chunks;\n}\n\n/**\n * Error display util: hibaüzenetek kiolvasása, cause-chain bejárás, stack report összeállítás.\n */\nexport class CCAP_ErrorDisplay_Util {\n\n/**\n * Teljes hibaüzenet a cause/error lánccal (REQ-SYS-005-CAUSE).\n * Egy szintű getSingleErrorMessage + \" — Caused by: \" + rekurzív getFullErrorMessageForDisplay(nested).\n */\nstatic getFullErrorMessageForDisplay(\n error: unknown,\n maxDepth: number = FULL_MESSAGE_MAX_DEPTH,\n): string {\n const base: string = getSingleErrorMessage(error);\n if (maxDepth <= 0) {\n return base;\n }\n const nested: unknown = getNestedError(error);\n if (nested == null) {\n return base;\n }\n const causeMessage: string = CCAP_ErrorDisplay_Util.getFullErrorMessageForDisplay(nested, maxDepth - 1);\n const trimmed: string = causeMessage.trim();\n if (trimmed.length > 0 && trimmed !== base) {\n // Generic fallback szűrés: ha a cause chain csak a fallback üzenet, nem ad hozzá információt\n if (trimmed === FALLBACK_ERROR_MESSAGE) {\n return base;\n }\n // DyFM_Error duplikáció szűrés: a framework res.send(error) a teljes DyFM_Error-t küldi,\n // amiben az error mező ugyanazt az _message-t tartalmazza → a cause chain a base-szel kezdődik.\n // Ilyenkor csak az új részt tartjuk meg (pl. \"X — Caused by: X — Caused by: Y\" → \"X — Caused by: Y\").\n const causedByPrefix: string = base + ' — Caused by: ';\n if (trimmed.startsWith(causedByPrefix)) {\n return trimmed;\n }\n return `${base} — Caused by: ${trimmed}`;\n }\n return base;\n}\n\n/**\n * Tetszőleges érték megjelenítésre és másolásra biztonságos stringre alakítása.\n * Objektum esetén JSON.stringify; \"[object Object]\" és üres string helyett fallback.\n * Defense in depth: a display komponensek ezt használják message/detailsText-re.\n */\nstatic toDisplaySafeString(value: unknown): string {\n if (value === null || value === undefined) {\n return '';\n }\n if (typeof value === 'string') {\n const t: string = value.trim();\n if (!t || t === '[object Object]') {\n return FALLBACK_ERROR_MESSAGE;\n }\n return value;\n }\n if (typeof value === 'object') {\n try {\n const json: string = JSON.stringify(value, null, 2);\n return json;\n } catch {\n return FALLBACK_ERROR_MESSAGE;\n }\n }\n return String(value);\n}\n\n/**\n * Unknown hiba objektumból mindig olvasható message string (soha \"[object Object]\").\n * Teljes cause/error láncot használ (getFullErrorMessageForDisplay), REQ-SYS-005-CAUSE szerint.\n */\nstatic getErrorMessageForDisplay(error: unknown): string {\n return CCAP_ErrorDisplay_Util.getFullErrorMessageForDisplay(error);\n}\n\n/**\n * Stack string a kliens jelentéshez (reportError payload): teljes lánc, nem csak egy szint.\n * Error / DyFM wrapper / .cause — Caused by szekciókkal.\n */\nstatic getStackForReport(error: unknown): string | undefined {\n const parts: string[] = collectStackSectionsForReport(error, FULL_MESSAGE_MAX_DEPTH);\n const joined: string = parts.join('\\n').trim();\n if (!joined.length) {\n return undefined;\n }\n return joined;\n}\n\n}\n", "import { Injectable, inject, signal } from '@angular/core';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { Router } from '@angular/router';\n\nimport { DyFM_Log, second } from '@futdevpro/fsm-dynamo';\n\nimport { CCAP_Ng0203Diagnostic_Util } from '../../_collections/error/ng0203-diagnostic.util';\nimport { CCAP_Ng0600Diagnostic_Util } from '../../_collections/error/ng0600-diagnostic.util';\nimport { CCAP_SocketTransportErrorNoiseMessage_Util } from '../../_collections/error/ccap-socket-transport-error-noise-message.util';\nimport { CCAP_HttpErrorTroubleshootingHint_Util } from '../../_collections/error/ccap-http-error-troubleshooting-hint.util';\nimport { CCAP_ErrorDisplay_Util } from '../../_collections/error/error-display.util';\nimport { CCAP_Ng0203DiagnosticResult_Interface } from '../../_models/interfaces/feedback-errors/ccap-ng0203-diagnostic-result.interface';\nimport { CCAP_Ng0600DiagnosticResult_Interface } from '../../_models/interfaces/feedback-errors/ccap-ng0600-diagnostic-result.interface';\nimport { CCAP_ErrorNotification_Interface } from '../../_models/interfaces/feedback-errors/ccap-error-notification.interface';\nimport { Set_General_DataService } from '../../_modules/config/_modules/settings/_services/data-services/global-settings/set-general.data-service';\nimport { Errors_ApiService } from '../../_modules/system/_modules/errors/_services/errors.api-service';\nimport {\n Err_Report_Request,\n Err_ErrorClientContext_Interface,\n} from '../../_modules/system/_modules/errors/_services/err.api-service.interface';\nimport { CCAP_CopyToClipboardResult_Type } from './global-error.control-service.interface';\n\n/**\n * Globális hiba megjelenítés: notification bubble-ök a main frame bal felső sarkában.\n * Kattintásra modál nyílik a részletes hiba megjelenítéssel (app-ccap-error-display).\n * Több hiba is megjelenhet egymás alatt (max 10 notification).\n * Notification-ban nyers error (unknown) + opcionális clientSource / ng0600|ng0203 diagnosztika; a display intézi.\n * Az error interceptor, Angular ErrorHandler és socket ezt hívja.\n * Nem HTTP hibák esetén jelentést küld a szervernek (POST /errors/report), hogy a hiba a hibalistába kerüljön.\n * Error path-ban soha nem dobunk: showError setTimeout-ban try/catch, re-entrancy guard.\n */\n@Injectable({\n providedIn: 'root',\n})\n/** CCAP_GlobalError_ControlService class. */\nexport class CCAP_GlobalError_ControlService {\n\n private readonly errors_AS: Errors_ApiService = inject(Errors_ApiService);\n private readonly router: Router = inject(Router);\n private readonly settingsGeneral_DS: Set_General_DataService = inject(\n Set_General_DataService,\n );\n\n /** Notification bubble lista (egymás alatt, overlay a content terület bal felső sarkában). */\n readonly errors_$ = signal<CCAP_ErrorNotification_Interface[]>([]);\n\n /**\n * Modálban megjelenítendő notification sor (kattintás a bubble-re): error + NG0600 meta;\n * null ha nincs kiválasztva.\n */\n readonly selectedNotificationForModal_$ = signal<CCAP_ErrorNotification_Interface | null>(null);\n\n /** Következő notification azonosító (auto-increment). */\n private nextNotificationId: number = 0;\n\n /** Maximum notification szám; túllépésnél a legrégebbi eltávolításra kerül. */\n private static readonly maxNotifications: number = 10;\n\n /** Notification bubble automatikus eltűnés ideje (ms). */\n private static readonly autoDismissMs: number = 10 * second;\n\n /** Exit animáció hossza (ms); ennyi idő után kerül ki a notification a listából. */\n private static readonly exitAnimationMs: number = 300;\n\n /**\n * Re-entrancy guard: ha true, a hívók (interceptor, handler) csak logoljanak, ne showError/reportError.\n * Elkerüli a dupla popup és a client–server loop-ot, ha a hiba a report/show path-ban történik.\n */\n private isErrorHandlingInProgress_: boolean = false;\n\n /** Re-entrancy guard aktuális értéke (interceptor/handler ezt ellenőrzi). */\n isErrorHandlingInProgress(): boolean {\n return this.isErrorHandlingInProgress_;\n }\n\n /** Re-entrancy guard bekapcsolása (interceptor/handler hívja show/report előtt). */\n beginErrorHandling(): void {\n this.isErrorHandlingInProgress_ = true;\n }\n\n /** Re-entrancy guard kikapcsolása (finally-ben hívandó). */\n endErrorHandling(): void {\n this.isErrorHandlingInProgress_ = false;\n }\n\n /**\n * Aktuális kliens kontextus (route, URL, userAgent, timestamp).\n * A report payload-hoz és a stack fejléchez használt.\n */\n getCurrentContext(): Err_ErrorClientContext_Interface {\n const route: string = typeof this.router?.url === 'string' ? this.router.url : '';\n const url: string = typeof window !== 'undefined' && window.location?.href ? window.location.href : '';\n const userAgent: string = typeof navigator !== 'undefined' && navigator.userAgent ? navigator.userAgent : '';\n const timestamp: string = new Date().toISOString();\n return { route: route || undefined, url: url || undefined, userAgent: userAgent || undefined, timestamp: timestamp };\n }\n\n /**\n * Stack string kontextus fejléccel (route, URL, userAgent, timestamp); mindig van stack a report-ban.\n */\n private buildStackWithContext(\n errorStack: string | undefined,\n context: Err_ErrorClientContext_Interface,\n ): string {\n const lines: string[] = ['[Context]'];\n if (context.route != null && context.route.length > 0) {\n lines.push(`Route: ${context.route}`);\n }\n if (context.url != null && context.url.length > 0) {\n lines.push(`URL: ${context.url}`);\n }\n if (context.userAgent != null && context.userAgent.length > 0) {\n lines.push(`User-Agent: ${context.userAgent}`);\n }\n if (context.timestamp != null && context.timestamp.length > 0) {\n lines.push(`Timestamp: ${context.timestamp}`);\n }\n const header: string = lines.join('\\n');\n const body: string = (errorStack != null && errorStack.trim().length > 0) ? errorStack.trim() : '(no stack)';\n return `${header}\\n\\n${body}`;\n }\n\n /**\n * Report payload készítése nyers error-ból: message, stack (kontextussal), source, clientContext.\n * Az interceptor és a showError ezt használja, hogy mindig stack + route/URL legyen a jelentésben.\n */\n buildReportPayloadFromError(error: unknown, source: string): Err_Report_Request {\n const context: Err_ErrorClientContext_Interface = this.getCurrentContext();\n const baseMessage: string = CCAP_ErrorDisplay_Util.getErrorMessageForDisplay(error);\n // BUG-CC-DISPATCH-DUP-LOG-001 / alapelv 24 #2 detail-bővítés (cycle 731):\n // HTTP errorra a server-side record `message` mezője gazdagítva URL + status\n // sufix-szel (pl. „fetch failed\" → „fetch failed | URL: https://… | status: 0\")\n // — diagnosztika a /errors page-en grep-elhető, a UI-display NEM érintett (a\n // baseMessage külön az ErrorDisplay path-on megy a popup-ba).\n const message: string =\n CCAP_GlobalError_ControlService.enrichMessageForReport(error, baseMessage);\n const rawStack: string | undefined = CCAP_ErrorDisplay_Util.getStackForReport(error);\n const stack: string = this.buildStackWithContext(rawStack, context);\n // -- errorCode és additionalContent kinyerése (DyFM_Error / errorDetails objektumok) --\n const errorCode: string | undefined =\n CCAP_GlobalError_ControlService.extractErrorCode(error);\n const errorAdditionalContent: Record<string, unknown> | undefined =\n CCAP_GlobalError_ControlService.extractAdditionalContent(error);\n return {\n message,\n stack,\n source: source ?? 'client-app',\n errorCode: errorCode,\n errorAdditionalContent: errorAdditionalContent,\n clientContext: context,\n };\n }\n\n /**\n * cycle 731 — alapelv 24 #2 detail-bővítés a server-side error-record `message`\n * mezőjére. HttpErrorResponse esetén a baseMessage-hez `| URL: <url> | status: <n>`\n * sufix-et fűz; minden más hiba esetén változatlanul tér vissza. Pure-static\n * helper a unit-teszthez.\n */\n static enrichMessageForReport(error: unknown, baseMessage: string): string {\n if (!(error instanceof HttpErrorResponse)) {\n return baseMessage;\n }\n const urlPart: string = error.url ? `URL: ${error.url}` : 'URL: (?)';\n const statusPart: string = `status: ${error.status}`;\n return `${baseMessage} | ${urlPart} | ${statusPart}`;\n }\n\n /**\n * errorCode kinyerése tetszőleges error objektumból (DyFM_Error, errorDetails, plain record).\n */\n private static extractErrorCode(error: unknown): string | undefined {\n if (error == null || typeof error !== 'object') {\n return undefined;\n }\n const rec: Record<string, unknown> = error as Record<string, unknown>;\n if (typeof rec.errorCode === 'string' && rec.errorCode.length > 0) {\n return rec.errorCode;\n }\n if (typeof rec._errorCode === 'string' && rec._errorCode.length > 0) {\n return rec._errorCode;\n }\n return undefined;\n }\n\n /**\n * additionalContent kinyerése tetszőleges error objektumból.\n */\n private static extractAdditionalContent(error: unknown): Record<string, unknown> | undefined {\n if (error == null || typeof error !== 'object') {\n return undefined;\n }\n const rec: Record<string, unknown> = error as Record<string, unknown>;\n if (rec.additionalContent != null && typeof rec.additionalContent === 'object') {\n return rec.additionalContent as Record<string, unknown>;\n }\n return undefined;\n }\n\n /**\n * Report payload készítése message/source/stack paraméterekből (pl. reportErrorOnly).\n * Kontextust és stack fejlécet mindig hozzáadja.\n */\n buildReportPayloadFromParams(params: {\n message: string;\n source: string;\n stack?: string;\n }): Err_Report_Request {\n const context: Err_ErrorClientContext_Interface = this.getCurrentContext();\n const stack: string = this.buildStackWithContext(params.stack, context);\n return {\n message: params.message,\n stack,\n source: params.source,\n clientContext: context,\n };\n }\n\n /**\n * Hiba megjelenítése notification bubble-ként az overlay-ben.\n * Nem HttpErrorResponse esetén jelentést küld a szervernek (hibalista); HTTP hibákat az interceptor már jelentette.\n * A notification az errors_$ listába kerül; a felhasználó kattintásra nyitja a részletes modált.\n * Signal write késleltetve (setTimeout), hogy ne NG0600 legyen, ha a hívás reaktív kontextusból\n * jön (pl. socket callback, HTTP observer, ErrorHandler).\n * Error path: signal set try/catch-ben, soha nem dobunk.\n */\n showError(error: unknown, source?: string): void {\n setTimeout((): void => {\n try {\n // Transport zaj (pl. xhr poll error) gyakran Angular ErrorHandler-ből jön: ugyanazt a general flag-et\n // alkalmazzuk — nincs notification és nincs hibalista-report, ha a socket lista-report ki van kapcsolva.\n let displayMessage: string = CCAP_ErrorDisplay_Util.getErrorMessageForDisplay(error);\n const troubleshootingAffix: string = CCAP_HttpErrorTroubleshootingHint_Util.tryGetShortNotificationAffix({\n error: error,\n });\n if (troubleshootingAffix.length > 0) {\n displayMessage = displayMessage + troubleshootingAffix;\n }\n if (!(error instanceof HttpErrorResponse)) {\n const reportSocketList: boolean =\n this.settingsGeneral_DS.section_$().form.reportSocketConnectionErrorsToErrorList === true;\n if (\n !reportSocketList\n && CCAP_SocketTransportErrorNoiseMessage_Util.matchesDisplayMessage(displayMessage)\n ) {\n if (error instanceof Error) {\n DyFM_Log.error('[CCAP]', source ?? 'client-app', error);\n }\n return;\n }\n }\n\n const context: Err_ErrorClientContext_Interface = this.getCurrentContext();\n let ng0600Diagnostics: CCAP_Ng0600DiagnosticResult_Interface | undefined;\n if (CCAP_Ng0600Diagnostic_Util.isNg0600Message(displayMessage)) {\n try {\n ng0600Diagnostics = CCAP_Ng0600Diagnostic_Util.buildDiagnostics({\n stack: CCAP_ErrorDisplay_Util.getStackForReport(error),\n context: {\n route: context.route,\n url: context.url,\n userAgent: context.userAgent,\n timestamp: context.timestamp,\n },\n clientSource: source,\n });\n } catch (diagErr: unknown) {\n DyFM_Log.error('CCAP NG0600 diagnostics failed', diagErr);\n }\n }\n let ng0203Diagnostics: CCAP_Ng0203DiagnosticResult_Interface | undefined;\n if (CCAP_Ng0203Diagnostic_Util.isNg0203Message(displayMessage)) {\n try {\n ng0203Diagnostics = CCAP_Ng0203Diagnostic_Util.buildDiagnostics({\n stack: CCAP_ErrorDisplay_Util.getStackForReport(error),\n context: {\n route: context.route,\n url: context.url,\n userAgent: context.userAgent,\n timestamp: context.timestamp,\n },\n clientSource: source,\n });\n } catch (diagErr: unknown) {\n DyFM_Log.error('CCAP NG0203 diagnostics failed', diagErr);\n }\n }\n\n // Notification hozzáadása a listához; ha túl sok van, a legrégebbit eldobjuk.\n const trimmedSource: string | undefined =\n source != null && source.trim().length > 0 ? source.trim() : undefined;\n const entry: CCAP_ErrorNotification_Interface = {\n id: this.nextNotificationId++,\n error: error,\n displayMessage: displayMessage,\n timestamp: Date.now(),\n isDismissing: false,\n clientSource: trimmedSource,\n ng0600Diagnostics: ng0600Diagnostics,\n ng0203Diagnostics: ng0203Diagnostics,\n };\n this.errors_$.update((list: CCAP_ErrorNotification_Interface[]): CCAP_ErrorNotification_Interface[] => {\n const updated: CCAP_ErrorNotification_Interface[] = [...list, entry];\n if (updated.length > CCAP_GlobalError_ControlService.maxNotifications) {\n return updated.slice(updated.length - CCAP_GlobalError_ControlService.maxNotifications);\n }\n return updated;\n });\n\n // Auto-dismiss: 10 másodperc után a notification automatikusan eltűnik.\n setTimeout((): void => {\n this.dismissNotification(entry.id);\n }, CCAP_GlobalError_ControlService.autoDismissMs);\n\n // Konzolra is logoljuk, hogy a DevTools source map-pal jelenítse meg a stack-et (ha a .map fájlok betöltődtek).\n if (error instanceof Error) {\n DyFM_Log.error('[CCAP]', source ?? 'client-app', error);\n }\n // HTTP hibákat az interceptor már jelentette; csak nem HTTP hibákat küldjük a hibalistába.\n if (!(error instanceof HttpErrorResponse)) {\n const basePayload: Err_Report_Request =\n this.buildReportPayloadFromError(error, source ?? 'client-app');\n let diagnosticAppendix: string = '';\n if (ng0600Diagnostics != null) {\n diagnosticAppendix = CCAP_Ng0600Diagnostic_Util.formatDiagnosticsAppendix(ng0600Diagnostics);\n } else if (ng0203Diagnostics != null) {\n diagnosticAppendix = CCAP_Ng0203Diagnostic_Util.formatDiagnosticsAppendix(ng0203Diagnostics);\n }\n const stackWithDiagnostics: string =\n diagnosticAppendix.length > 0\n ? `${basePayload.stack ?? ''}${diagnosticAppendix}`\n : (basePayload.stack ?? '');\n const payload: Err_Report_Request = {\n message: basePayload.message,\n stack: stackWithDiagnostics,\n source: basePayload.source,\n sessionId: basePayload.sessionId,\n runId: basePayload.runId,\n errorCode: basePayload.errorCode,\n errorAdditionalContent: basePayload.errorAdditionalContent,\n clientContext: basePayload.clientContext,\n };\n this.errors_AS.reportError(payload).catch((): void => {});\n }\n } catch (e: unknown) {\n DyFM_Log.error('CCAP showError set failed', e);\n }\n }, 0);\n }\n\n /**\n * Notification bubble kiválasztása (kattintás): megnyitja a részletes hiba modált.\n * A notification a listából nem kerül el — a felhasználó külön zárja be (dismissNotification).\n */\n selectError(id: number): void {\n const entry: CCAP_ErrorNotification_Interface | undefined =\n this.errors_$().find((e: CCAP_ErrorNotification_Interface): boolean => e.id === id);\n if (entry != null) {\n this.selectedNotificationForModal_$.set(entry);\n }\n }\n\n /**\n * Notification bubble eltávolítása: exit animáció indítása (isDismissing flag),\n * majd az animáció végén tényleges eltávolítás a listából.\n * Ha már dismissing, nem indít újabb timert.\n */\n dismissNotification(id: number): void {\n const current: CCAP_ErrorNotification_Interface[] = this.errors_$();\n const entry: CCAP_ErrorNotification_Interface | undefined =\n current.find((e: CCAP_ErrorNotification_Interface): boolean => e.id === id);\n if (entry == null || entry.isDismissing) {\n return;\n }\n // isDismissing flag beállítása: az exit animáció CSS osztályt aktiválja a template-ben.\n this.errors_$.update(\n (list: CCAP_ErrorNotification_Interface[]): CCAP_ErrorNotification_Interface[] =>\n list.map((e: CCAP_ErrorNotification_Interface): CCAP_ErrorNotification_Interface =>\n e.id === id ? { ...e, isDismissing: true } : e,\n ),\n );\n // Animáció végén tényleges eltávolítás.\n setTimeout((): void => {\n this.errors_$.update(\n (list: CCAP_ErrorNotification_Interface[]): CCAP_ErrorNotification_Interface[] =>\n list.filter((e: CCAP_ErrorNotification_Interface): boolean => e.id !== id),\n );\n }, CCAP_GlobalError_ControlService.exitAnimationMs);\n }\n\n /** Részletes hiba modál bezárása (a modal close eseményére). */\n dismissSelected(): void {\n this.selectedNotificationForModal_$.set(null);\n }\n\n /** Összes notification és a modal bezárása. */\n dismissAll(): void {\n this.errors_$.set([]);\n this.selectedNotificationForModal_$.set(null);\n }\n\n /**\n * Szöveg másolása a vágólapra.\n * Visszaadja a sikerességet; sikertelen esetben az error a hibalistába reportolható.\n * Először a secure Clipboard API-t próbálja; ha az nem elérhető vagy hibázik, legacy\n * `document.execCommand('copy')` + rejtett textarea (HTTP / régi böngészők, user gesture mellett).\n */\n async copyToClipboard(text: string): Promise<CCAP_CopyToClipboardResult_Type> {\n const viaClipboardApi: boolean = await this.tryWriteTextWithNavigatorClipboard(text);\n if (viaClipboardApi) {\n return { ok: true };\n }\n if (this.copyTextWithExecCommand(text)) {\n return { ok: true };\n }\n return {\n ok: false,\n error: new Error(\n 'Clipboard copy failed (secure Clipboard API unavailable or denied, and legacy execCommand copy failed)',\n ),\n };\n }\n\n /**\n * `navigator.clipboard.writeText` ha elérhető; false, ha nincs API, vagy a hívás rejectel / nem futtatható.\n */\n private async tryWriteTextWithNavigatorClipboard(text: string): Promise<boolean> {\n const clipboard: Clipboard | undefined = typeof navigator !== 'undefined' ? navigator.clipboard : undefined;\n if (clipboard == null || typeof clipboard.writeText !== 'function') {\n return false;\n }\n try {\n await clipboard.writeText(text);\n return true;\n } catch {\n return false;\n }\n }\n\n /**\n * Rejtett textarea + `document.execCommand('copy')` — nem igényel secure context-et; user gesture-ből\n * (pl. copy gomb) hívva sok böngészőben működik HTTP-n is.\n */\n private copyTextWithExecCommand(text: string): boolean {\n if (typeof document === 'undefined' || typeof document.execCommand !== 'function') {\n return false;\n }\n const textarea: HTMLTextAreaElement = document.createElement('textarea');\n textarea.value = text;\n textarea.setAttribute('readonly', '');\n textarea.setAttribute('aria-hidden', 'true');\n // Kis, láthatatlan mező a viewport-ban: egyes mobil böngészők a teljesen off-screen elemet nem másolják.\n textarea.style.position = 'fixed';\n textarea.style.top = '0';\n textarea.style.left = '0';\n textarea.style.width = '1px';\n textarea.style.height = '1px';\n textarea.style.padding = '0';\n textarea.style.margin = '0';\n textarea.style.border = 'none';\n textarea.style.outline = 'none';\n textarea.style.opacity = '0';\n textarea.style.pointerEvents = 'none';\n document.body.appendChild(textarea);\n textarea.focus();\n textarea.select();\n const end: number = text.length;\n textarea.setSelectionRange(0, end);\n let copied: boolean = false;\n try {\n copied = document.execCommand('copy');\n } catch {\n copied = false;\n }\n textarea.remove();\n return copied;\n }\n\n /**\n * Hiba jelentése a szervernek a hibalistába, popup megjelenítés nélkül.\n * Mindig hozzáadja a kontextust (route, URL, userAgent, timestamp) és stack fejlécet.\n * Socket transport: ha a general flag ki van kapcsolva, nem küldünk client-socket forrást és a zaj-üzenetet\n * (pl. „WebSocket: xhr poll error — …”) más forrással sem — régi bundle / versenyhelyzet ellen.\n */\n reportErrorOnly(params: { message: string; source: string; stack?: string }): void {\n const reportSocketList: boolean =\n this.settingsGeneral_DS.section_$().form.reportSocketConnectionErrorsToErrorList === true;\n if (!reportSocketList) {\n if (params.source === 'client-socket') {\n return;\n }\n if (CCAP_SocketTransportErrorNoiseMessage_Util.matchesDisplayMessage(params.message)) {\n return;\n }\n }\n const payload: Err_Report_Request =\n this.buildReportPayloadFromParams(params);\n this.errors_AS.reportError(payload).catch((): void => {});\n }\n}\n\n", "/**\n * Socket.IO / engine.io transport hibák megjelenített üzenet-alapú felismerése.\n * Ezek gyakran Zone / ErrorHandler úton is bejutnak (showError), nem csak a socket control service reportErrorOnly-ján.\n */\nexport class CCAP_SocketTransportErrorNoiseMessage_Util {\n /**\n * Igaz, ha a getErrorMessageForDisplay / report message tipikus transport zaj (pl. szerver restart),\n * és a general flag kikapcsolásakor érdemes elnyelni a hibalistát és a globális popup-ot is.\n */\n static matchesDisplayMessage(message: string): boolean {\n // Em dash / en dash / hyphen: a buildSocketErrorDisplay „ — ” formátumot használ; a substring így is illeszkedik.\n const m: string = message.trim().toLowerCase();\n if (!m.length) {\n return false;\n }\n if (m.includes('xhr poll error')) {\n return true;\n }\n if (m.includes('websocket:') && m.includes('xhr poll')) {\n return true;\n }\n if (m === 'timeout') {\n return true;\n }\n if (m.includes('websocket error')) {\n return true;\n }\n if (m.includes('websocket:') && m.includes('timeout')) {\n return true;\n }\n return false;\n }\n}\n", "/**\n * `additionalContent` kulcs a PM / user manuális megjelöléshez (ISO időbélyeg string).\n * Szerver: ugyanaz a literál (`ccap-errors-pm-user-mark-key.const.ts`).\n */\nexport const CCAP_ERRORS_PM_USER_MARKED_AT_KEY: string = 'pmUserMarkedAt';\n", "import { inject, Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\n\nimport { firstValueFrom, map } from 'rxjs';\n\nimport { DyFM_Paged } from '@futdevpro/fsm-dynamo';\n\nimport { environment } from '../../../../../../environments/environment';\nimport { CCAP_ERRORS_PM_USER_MARKED_AT_KEY } from '../../../../../_collections/error/ccap-errors-pm-user-mark-key.const';\nimport { ObjectTypeGuards_Util } from '../../../../../_collections/utils/object-type-guards.util';\nimport { CCAP_ErrorListItem_Response } from '../../../../../_models/interfaces/feedback-errors/ccap-error-list-item.interface';\nimport {\n CCAP_ErrorStats_Response,\n CCAP_ErrorStatsRangeKey_Type,\n} from '../../../../../_models/interfaces/feedback-errors/ccap-error-stats.interface';\nimport { CCAP_FixAnnotation_Response } from '../../../../../_models/interfaces/feedback-errors/ccap-fix-annotation.interface';\nimport { Err_Report_Request } from './err.api-service.interface';\n\n/**\n * DyNTS error list item – DyFM_Errors rekord + Mon_Errors root mezők (ccapId, sessionId, runId),\n * ha a szerializált válasz tartalmazza.\n */\ninterface CCAP_DyNTSErrorRecord_Response {\n _id?: string;\n message?: string;\n /** DyFM_Error gyökér / legacy Mongo doc: üres message mellett itt lehet szöveg. */\n _message?: string;\n _errorCode?: string;\n flag?: string;\n /** Ritka: rosszul mentett doc, ahol a gyökér DyFM_Error-szerű; stack itt lehet. */\n error?: unknown;\n d_error?: unknown;\n ___issuerService?: string;\n /** Sorok tömbje vagy egybefüggő string (szerializáció / régi doc). */\n stackTrace?: string[] | string;\n /** Ritka: ha a szerver stringként küldi a stack-et üres stackTrace mellett. */\n stack?: string;\n source?: string;\n count?: number;\n __lastModified?: string;\n __created?: string;\n ccapId?: unknown;\n sessionId?: unknown;\n runId?: unknown;\n additionalContent?: unknown;\n /** DyFM_Errors versions tömb (cycle 780 klasszifikáció bemenete). */\n versions?: unknown;\n}\n\n/** Alapértelmezett page size a hiba listázáshoz. */\nconst DEFAULT_PAGE_SIZE: number = 100;\n\n/**\n * Errors API service.\n * HTTP hívások a DyNTS default /errors/error/* endpoint-jaira: lista, törlés, kliens jelentés.\n */\n@Injectable({ providedIn: 'root' })\nexport class Errors_ApiService {\n\n /** API base URL. */\n private baseUrl: string = `${environment.api.baseUrl}/errors`;\n\n private readonly http: HttpClient = inject(HttpClient);\n\n /**\n * Hibák listázása (__lastModified DESC – DyNTS get-last-paged).\n * A DyFM_Paged<DyFM_Errors> items-t CCAP_ErrorListItem_Response[]-ra map-eli.\n */\n listErrors(params?: { limit?: number; skip?: number }): Promise<{\n errors: CCAP_ErrorListItem_Response[];\n /**\n * BUG-ERR-COUNT-CAP-001 (cycle 436): a paginált válasz `total` mezője —\n * a teljes szervert szám, nem a lekért lap mérete. A main-menu badge\n * ezt használja, hogy 30/100 cap helyett a tényleges error-szám látszódjon.\n */\n total: number;\n }> {\n const pageSize: number = params?.limit ?? DEFAULT_PAGE_SIZE;\n const pageIndex: number = params?.skip\n ? Math.floor(params.skip / pageSize)\n : 0;\n\n const url: string =\n `${this.baseUrl}/error/get-last-paged/month/${pageSize}/${pageIndex}`;\n\n return firstValueFrom(\n this.http.get<DyFM_Paged<CCAP_DyNTSErrorRecord_Response>>(url).pipe(\n map((paged: DyFM_Paged<CCAP_DyNTSErrorRecord_Response>): {\n errors: CCAP_ErrorListItem_Response[];\n total: number;\n } => ({\n errors: (paged.items ?? []).map(\n (rec: CCAP_DyNTSErrorRecord_Response): CCAP_ErrorListItem_Response =>\n Errors_ApiService.mapRecordToListItem(rec),\n ),\n total: typeof paged.total === 'number' ? paged.total : 0,\n })),\n ),\n );\n }\n\n /**\n * Cycle 780: fix-annotation registry lekérdezése (REQ-SYS-EH-FIX-ANNOTATION-001).\n * GET /api/errors/fix-annotations → `{ total, annotations: [{ errorCode, fixedInVersion, ... }] }`.\n * A data-service ebből egy `errorCode → annotation` Map-et épít, és minden\n * error-rekordra kiszámolja a klasszifikációt (STALE-BUILD / REGRESSION / UNFIXED).\n */\n listFixAnnotations(): Promise<CCAP_FixAnnotation_Response[]> {\n return firstValueFrom(\n this.http.get<{ total: number; annotations: CCAP_FixAnnotation_Response[] }>(\n `${this.baseUrl}/fix-annotations`,\n ).pipe(\n map((resp: { annotations: CCAP_FixAnnotation_Response[] }): CCAP_FixAnnotation_Response[] =>\n resp.annotations ?? [],\n ),\n ),\n );\n }\n\n /**\n * REQ-UI-ERR-STATISTICS-001 Slice 2 (cycle 969) — aggregált error-statisztika\n * lekérdezés a `/errors` page stats-panel-jéhez. A szerver\n * `ErrorHandling_Stats_ControlService.handleStatisticsRequest` válaszát\n * tükör-interface-re mappeli.\n *\n * GET /api/errors/statistics?range=1h|24h|7d|all (default 24h server-side).\n */\n getErrorStatistics(rangeKey: CCAP_ErrorStatsRangeKey_Type): Promise<CCAP_ErrorStats_Response> {\n const url: string = `${this.baseUrl}/statistics?range=${encodeURIComponent(rangeKey)}`;\n return firstValueFrom(\n this.http.get<CCAP_ErrorStats_Response>(url),\n );\n }\n\n /**\n * Egy hiba törlése id alapján (DyNTS mark-done).\n */\n deleteError(id: string): Promise<void> {\n return firstValueFrom(\n this.http.get<unknown>(\n `${this.baseUrl}/error/mark-done/${id}`,\n ).pipe(map((): void => undefined)),\n );\n }\n\n /**\n * Összes hiba törlése (DyNTS mark-all-done).\n */\n deleteAllErrors(): Promise<void> {\n return firstValueFrom(\n this.http.get<unknown>(\n `${this.baseUrl}/error/mark-all-done`,\n ).pipe(map((): void => undefined)),\n );\n }\n\n /**\n * PM / user manuális megjelölés (POST /error/pm-user-mark/:errorId).\n */\n setPmUserMark(id: string, marked: boolean): Promise<{ pmUserMarkedAt: string | null }> {\n const trimmed: string = id.trim();\n return firstValueFrom(\n this.http.post<{ pmUserMarkedAt: string | null }>(\n `${this.baseUrl}/error/pm-user-mark/${encodeURIComponent(trimmed)}`,\n { marked: marked },\n ),\n );\n }\n\n /**\n * Kliens által jelentett hiba küldése a szervernek (DyNTS error/new).\n * A payload-ot DyFM_Errors formátumra alakítja.\n */\n reportError(\n payload: Err_Report_Request,\n ): Promise<{ recorded: boolean }> {\n // -- errorCode prefix a message-be, ha van (azonosítható a hibalistában) --\n const messageWithCode: string = payload.errorCode\n ? `[${payload.errorCode}] ${payload.message}`\n : payload.message;\n // -- surroundingState: client context + error additionalContent merge --\n const surroundingState: Record<string, unknown> = {\n ...(payload.clientContext ?? {}),\n ...(payload.errorAdditionalContent != null ? payload.errorAdditionalContent : {}),\n };\n // -- additionalContent felépítése: csak meglévő mezőkkel --\n const additionalContent: Record<string, unknown> = {\n sessionId: payload.sessionId,\n runId: payload.runId,\n surroundingState: surroundingState,\n };\n if (payload.errorCode) {\n additionalContent.errorCode = payload.errorCode;\n }\n const body: Record<string, unknown> = {\n message: messageWithCode,\n source: payload.source,\n stackTrace: payload.stack\n ? payload.stack.split('\\n')\n : [],\n additionalContent: additionalContent,\n };\n\n return firstValueFrom(\n this.http.post<unknown>(\n `${this.baseUrl}/error/new`,\n body,\n ).pipe(\n map((): { recorded: boolean } => ({ recorded: true })),\n ),\n );\n }\n\n /**\n * DyNTS DyFM_Errors rekord -> CCAP_ErrorListItem_Response mapping.\n * sessionId / runId: root elsőbbség, majd legacy additionalContent.\n */\n private static mapRecordToListItem(\n rec: CCAP_DyNTSErrorRecord_Response,\n ): CCAP_ErrorListItem_Response {\n const additional: Record<string, unknown> = ObjectTypeGuards_Util.isRecord(rec.additionalContent)\n ? rec.additionalContent\n : {};\n\n const surroundingRaw: unknown = additional.surroundingState;\n const surroundingState: Record<string, unknown> | undefined = ObjectTypeGuards_Util.isRecord(surroundingRaw)\n ? surroundingRaw\n : undefined;\n\n const sessionFromAdditional: string | undefined =\n Errors_ApiService.optionalNonEmptyString(additional.sessionId);\n const runFromAdditional: string | undefined =\n Errors_ApiService.optionalNonEmptyString(additional.runId);\n\n const pmMarked: string | undefined = Errors_ApiService.optionalNonEmptyString(\n additional[CCAP_ERRORS_PM_USER_MARKED_AT_KEY],\n );\n\n return {\n _id: rec._id,\n message: Errors_ApiService.resolveMessageFromRecord(rec),\n stack: Errors_ApiService.resolveStackTextFromRecord(rec),\n source: Errors_ApiService.resolveSourceFromRecord(rec),\n occurrenceCount: rec.count,\n lastOccurrenceAt: rec.__lastModified,\n timestamp: rec.__created,\n ccapId: Errors_ApiService.optionalNonEmptyString(rec.ccapId),\n sessionId:\n Errors_ApiService.optionalNonEmptyString(rec.sessionId) ?? sessionFromAdditional,\n runId: Errors_ApiService.optionalNonEmptyString(rec.runId) ?? runFromAdditional,\n surroundingState: surroundingState,\n pmUserMarkedAt: pmMarked,\n // Cycle 780 (REQ-SYS-EH-FIX-ANNOTATION-001) — versions + errorCode\n // továbbadása, hogy a data-service kiszámolhassa a klasszifikációt.\n versions: Errors_ApiService.extractVersions(rec.versions),\n errorCode: Errors_ApiService.optionalNonEmptyString(rec._errorCode),\n };\n }\n\n /**\n * Cycle 780: DyFM_Errors versions tömb normalizálása string[]-re.\n * A versions mező lehet `[\"SERVER-1.1.2469\", \"SERVER-1.1.2469\"]` vagy\n * `[\"SERVER-...\", { \"$push\": \"SERVER-...\" }]` (ritka legacy formátum).\n */\n private static extractVersions(raw: unknown): string[] {\n if (!Array.isArray(raw)) {\n return [];\n }\n const out: string[] = [];\n for (const item of raw) {\n if (typeof item === 'string' && item.length > 0) {\n out.push(item);\n continue;\n }\n if (ObjectTypeGuards_Util.isRecord(item)) {\n const pushed: unknown = item.$push;\n if (typeof pushed === 'string' && pushed.length > 0) {\n out.push(pushed);\n }\n }\n }\n return out;\n }\n\n /**\n * Hibalista cím (message): gyökér, _message, majd beágyazott error / d_error (legacy Mongo doc).\n */\n private static resolveMessageFromRecord(\n rec: CCAP_DyNTSErrorRecord_Response,\n ): string | undefined {\n const fromRoot: string | undefined = Errors_ApiService.optionalNonEmptyString(\n rec.message,\n );\n if (fromRoot != null) {\n return fromRoot;\n }\n const fromUnderscore: string | undefined = Errors_ApiService.optionalNonEmptyString(\n rec._message,\n );\n if (fromUnderscore != null) {\n return fromUnderscore;\n }\n const fromErrorNested: string | undefined =\n Errors_ApiService.optionalNonEmptyString(\n Errors_ApiService.readMessageFromErrorLikeUnknown(rec.error),\n ) ??\n Errors_ApiService.optionalNonEmptyString(\n Errors_ApiService.readMessageFromErrorLikeUnknown(rec.d_error),\n );\n return fromErrorNested;\n }\n\n /**\n * Forrás: gyökér source, majd ___issuerService (DyFM_Error-szerű / hibásan mentett sor).\n */\n private static resolveSourceFromRecord(\n rec: CCAP_DyNTSErrorRecord_Response,\n ): string | undefined {\n const fromSource: string | undefined = Errors_ApiService.optionalNonEmptyString(\n rec.source,\n );\n if (fromSource != null) {\n return fromSource;\n }\n return Errors_ApiService.optionalNonEmptyString(rec.___issuerService);\n }\n\n /**\n * Stack szöveg: stackTrace tömb/string, gyökér stack, majd nested error / d_error.stack.\n */\n private static resolveStackTextFromRecord(\n rec: CCAP_DyNTSErrorRecord_Response,\n ): string | undefined {\n const traceUnknown: unknown = rec.stackTrace;\n if (typeof traceUnknown === 'string' && traceUnknown.trim().length > 0) {\n return traceUnknown.trim();\n }\n const fromLines: string | undefined =\n Array.isArray(traceUnknown) && traceUnknown.length > 0\n ? traceUnknown.join('\\n')\n : undefined;\n if (fromLines != null && fromLines.trim().length > 0) {\n return fromLines;\n }\n if (typeof rec.stack === 'string' && rec.stack.trim().length > 0) {\n return rec.stack;\n }\n const fromNestedError: string | undefined = Errors_ApiService.optionalNonEmptyString(\n Errors_ApiService.readStackFromErrorLikeUnknown(rec.error),\n );\n if (fromNestedError != null) {\n return fromNestedError;\n }\n return Errors_ApiService.optionalNonEmptyString(\n Errors_ApiService.readStackFromErrorLikeUnknown(rec.d_error),\n );\n }\n\n /**\n * API-ból jövő lapos error-alak message / _message mezője.\n */\n private static readMessageFromErrorLikeUnknown(value: unknown): string | undefined {\n if (!ObjectTypeGuards_Util.isRecord(value)) {\n return undefined;\n }\n const msg: unknown = value.message;\n if (typeof msg === 'string' && msg.trim().length > 0) {\n return msg.trim();\n }\n const under: unknown = value._message;\n if (typeof under === 'string' && under.trim().length > 0) {\n return under.trim();\n }\n return undefined;\n }\n\n /**\n * API-ból jövő lapos error-alak stack string mezője.\n */\n private static readStackFromErrorLikeUnknown(value: unknown): string | undefined {\n if (!ObjectTypeGuards_Util.isRecord(value)) {\n return undefined;\n }\n const st: unknown = value.stack;\n if (typeof st === 'string' && st.trim().length > 0) {\n return st.trim();\n }\n return undefined;\n }\n\n /**\n * Nem üres string kiolvasása unknown értékből (API / Mongo mezők); egyébként undefined.\n */\n private static optionalNonEmptyString(value: unknown): string | undefined {\n if (typeof value !== 'string') {\n return undefined;\n }\n const trimmed: string = value.trim();\n if (!trimmed.length) {\n return undefined;\n }\n return trimmed;\n }\n}\n"],
|
|
5
|
+
"mappings": "iLAIO,IAAMA,EAA+E,CAC1F,CAAEC,OAAQ,SAAUC,KAAM,6DAAwD,EAClF,CAAED,OAAQ,YAAaC,KAAM,mEAA8D,EAC3F,CAAED,OAAQ,kBAAmBC,KAAM,+DAA0D,EAC7F,CAAED,OAAQ,sBAAuBC,KAAM,2FAAsF,EAC7H,CAAED,OAAQ,kBAAmBC,KAAM,+DAA0D,EAC7F,CAAED,OAAQ,WAAYC,KAAM,yDAAoD,EAChF,CAAED,OAAQ,UAAWC,KAAM,oEAA+D,EAC1F,CAAED,OAAQ,YAAaC,KAAM,mDAA8C,EAC3E,CAAED,OAAQ,QAASC,KAAM,0EAAqE,EAC9F,CAAED,OAAQ,oBAAqBC,KAAM,gFAA2E,EAChH,CAAED,OAAQ,mBAAoBC,KAAM,kFAA6E,EACjH,CAAED,OAAQ,6BAA8BC,KAAM,sGAAiG,EAC/I,CAAED,OAAQ,qBAAsBC,KAAM,qFAAgF,EACtH,CAAED,OAAQ,eAAgBC,KAAM,yDAAoD,EACpF,CAAED,OAAQ,eAAgBC,KAAM,yDAAoD,EACpF,CAAED,OAAQ,sBAAuBC,KAAM,uEAAkE,EACzG,CAAED,OAAQ,cAAeC,KAAM,0DAAqD,EACpF,CAAED,OAAQ,cAAeC,KAAM,wEAAmE,EAClG,CAAED,OAAQ,cAAeC,KAAM,+CAA0C,EACzE,CAAED,OAAQ,cAAeC,KAAM,uDAAkD,EACjF,CAAED,OAAQ,cAAeC,KAAM,uDAAkD,EACjF,CAAED,OAAQ,mBAAoBC,KAAM,iEAA4D,EAChG,CAAED,OAAQ,aAAcC,KAAM,oFAA+E,EAC7G,CACED,OAAQ,6BACRC,KAAM,8GAER,CACED,OAAQ,iBACRC,KAAM,gJAER,CAAED,OAAQ,IAAKC,KAAM,4DAAuD,CAAE,ECxBhF,IAAMC,EAAyB,SAMlBC,EAAP,MAAOA,CAA0B,CAKrC,OAAOC,gBAAgBC,EAAe,CACpC,OAAOA,EAAQC,KAAI,IAAOJ,CAC5B,CAKA,OAAOK,iBAAiBC,EAIvB,CACC,IAAMC,EAAsD,CAC1DC,MAAOF,EAAOG,QAAQD,MACtBE,IAAKJ,EAAOG,QAAQC,IACpBC,UAAWL,EAAOG,QAAQE,UAC1BC,UAAWN,EAAOG,QAAQG,WAEtBC,EACJZ,EAA2Ba,iBAAiBR,EAAOS,KAAK,EACpDP,EAAgB,OAAOF,EAAOG,QAAQD,OAAU,SAAWF,EAAOG,QAAQD,MAAQ,GAClFQ,EAA8Bf,EAA2BgB,yBAAyBT,CAAK,EACvFU,EAA2BjB,EAA2BkB,oBAAmB,EACzEC,EAA6CnB,EAA2BoB,eAAe,CAC3Fd,eAAgBA,EAChBe,aAAchB,EAAOgB,aACrBT,YAAaA,EACbG,kBAAmBA,EACpB,EACD,MAAO,CACLO,QACE,wIACFD,aAAchB,EAAOgB,aACrBf,eAAgBA,EAChBM,YAAaA,EACbG,kBAAmBA,EACnBE,eAAgBA,EAChBE,UAAWA,EAEf,CAKA,OAAOI,0BAA0BC,EAAkD,CACjF,IAAIC,EACJ,GAAI,CACFA,EAAOC,KAAKC,UAAUH,EAAa,KAAM,CAAC,CAC5C,MAAQ,CACNC,EAAO,+CACT,CACA,MAAO;;;EAA6BA,CAAI,EAC1C,CAKQ,OAAOZ,iBAAiBC,EAAyB,CACvD,GAAIA,GAAS,MAAQ,CAACA,EAAMX,KAAI,EAC9B,MAAO,CAAA,EAET,IAAMyB,EAAkBd,EAAMe,MAAM;CAAI,EAAEC,IAAKC,GAAsBA,EAAE5B,KAAI,CAAE,EAAE6B,OAC5ED,GAAuBA,EAAEE,OAAS,CAAC,EAEhCC,EAA4C,CAAA,EAClD,QAAWC,KAAQP,EAAO,CACxB,IAAMQ,EACJpC,EAA2BqC,kBAAkBF,CAAI,EAC/CC,GAAU,MACZF,EAAOI,KAAKF,CAAM,CAEtB,CACA,OAAOF,CACT,CAKQ,OAAOG,kBAAkBF,EAAY,CAC3C,IAAMI,EAAsCJ,EAAKK,MAAM,iBAAiB,EAClEC,EACJF,GAAc,MAAQA,EAAW,CAAC,GAAK,KAAOA,EAAW,CAAC,EAAEpC,KAAI,EAAK,KACvE,GAAIsC,GAAW,MAAQzC,EAA2B0C,wBAAwBD,CAAO,EAAG,CAClF,IAAME,EAAM3C,EAA2B4C,gBAAgBH,CAAO,EAC9D,GAAIE,GAAO,KACT,MAAO,CACLE,QAASV,EACT1B,IAAKkC,EAAIlC,IACT0B,KAAMQ,EAAIR,KACVW,OAAQH,EAAIG,OACZC,WAAY/C,EAA2BgD,kBAAkBL,EAAIlC,GAAG,EAGtE,CACA,IAAMwC,EAAmCd,EAAKK,MAAM,kBAAkB,EACtE,GAAIS,GAAW,MAAQA,EAAQ,CAAC,GAAK,KAAM,CACzC,IAAMC,EAAgBD,EAAQ,CAAC,EAAE9C,KAAI,EACrC,GAAIH,EAA2B0C,wBAAwBQ,CAAK,EAAG,CAC7D,IAAMP,EAAM3C,EAA2B4C,gBAAgBM,CAAK,EAC5D,GAAIP,GAAO,KACT,MAAO,CACLE,QAASV,EACT1B,IAAKkC,EAAIlC,IACT0B,KAAMQ,EAAIR,KACVW,OAAQH,EAAIG,OACZC,WAAY/C,EAA2BgD,kBAAkBL,EAAIlC,GAAG,EAGtE,CACF,CACA,MAAO,CACLoC,QAASV,EACTY,WAAY,QAEhB,CAEQ,OAAOL,wBAAwBS,EAAS,CAC9C,MAAO,eAAeC,KAAKD,CAAC,GAAKA,EAAEE,SAAS,MAAM,CACpD,CAEQ,OAAOT,gBAAgBO,EAAS,CACtC,IAAMG,EAAa,qBACbC,EAA6BJ,EAAEX,MAAMc,CAAE,EAC7C,GAAIC,GAAK,MAAQA,EAAE,CAAC,GAAK,MAAQA,EAAE,CAAC,GAAK,MAAQA,EAAE,CAAC,GAAK,KACvD,OAAO,KAET,IAAM9C,EAAc8C,EAAE,CAAC,EACjBpB,EAAeqB,OAAOC,SAASF,EAAE,CAAC,EAAG,EAAE,EACvCT,EAAiBU,OAAOC,SAASF,EAAE,CAAC,EAAG,EAAE,EAC/C,MAAI,CAACC,OAAOE,SAASvB,CAAI,GAAK,CAACqB,OAAOE,SAASZ,CAAM,EAC5C,KAEF,CAAErC,IAAKA,EAAK0B,KAAMA,EAAMW,OAAQA,CAAM,CAC/C,CAEQ,OAAOE,kBAAkBvC,EAAW,CAC1C,IAAMkD,EAAgBlD,EAAImD,YAAW,EACrC,OAAID,EAAMN,SAAS,OAAO,GAAKM,EAAME,SAAS,KAAK,EAC1C,OAELF,EAAMN,SAAS,QAAQ,GAAKM,EAAMN,SAAS,QAAQ,EAC9C,QAEF,OACT,CAKQ,OAAOrC,yBAAyBT,EAAa,CACnD,IAAMuD,EAAqBvD,EAAMwD,WAAW,GAAG,EAAIxD,EAASA,EAAM0B,OAAS,EAAI,IAAI1B,CAAK,GAAK,GACvFyD,EAA6C,CAAC,GAAGC,CAA+B,EAAEC,KACtF,CAACC,EAAqCC,IACpCA,EAAEC,OAAOpC,OAASkC,EAAEE,OAAOpC,MAAM,EAErC,QAAWqC,KAASN,EAClB,GAAIM,EAAMD,SAAW,MAGjBP,IAAeQ,EAAMD,QAAUP,EAAWC,WAAW,GAAGO,EAAMD,MAAM,GAAG,GACzE,MAAO,CAACC,EAAMC,IAAI,EAGtB,GAAIT,IAAe,IAAMA,IAAe,IAAK,CAC3C,IAAMU,EAAqDP,EAAgCQ,KACxFC,GAAiDA,EAAEL,SAAW,GAAG,EAEpE,GAAIG,GAAQ,KACV,MAAO,CAACA,EAAKD,IAAI,CAErB,CACA,MAAO,CAAA,CACT,CAEQ,OAAOrD,qBAAmB,CAChC,MAAO,CACL,yKACA,wKACA,+JACA,uDAAuD,CAE3D,CAEQ,OAAOE,eAAef,EAK7B,CACC,IAAMsE,EAAyC,CAAA,EAC/CA,EAAMrC,KAAK,CACTsC,GAAI,gBACJC,MAAO,iBACPC,OAAQpD,KAAKC,UAAUtB,EAAOC,eAAgB,KAAM,CAAC,EACtD,EACDqE,EAAMrC,KAAK,CACTsC,GAAI,kBACJC,MAAO,mBACPC,OACEzE,EAAOgB,cAAgB,MAAQhB,EAAOgB,aAAalB,KAAI,EAAG8B,OAAS,EAC/D5B,EAAOgB,aAAalB,KAAI,EACxB,sFACP,EACD,IAAM4E,EACJ1E,EAAOO,YAAYqB,OAAS,EACxB5B,EAAOO,YACNoE,MAAM,EAAG,CAAC,EACVlD,IAAKmD,GAA8C,CAClD,IAAMC,EAAkB,CAACD,EAAElC,UAAU,EACrC,OAAIkC,EAAExE,KAAO,MACXyE,EAAM5C,KAAK2C,EAAExE,GAAG,EAEdwE,EAAE9C,MAAQ,MACZ+C,EAAM5C,KAAK,QAAQ6C,OAAOF,EAAE9C,IAAI,CAAC,EAAE,EAE9B,GAAG8C,EAAEpC,OAAO;WAASqC,EAAME,KAAK,KAAK,CAAC,EAC/C,CAAC,EACAA,KAAK;;CAAM,EACZ,2BACNT,OAAAA,EAAMrC,KAAK,CACTsC,GAAI,uBACJC,MAAO,wBACPC,OAAQC,EACT,EACDJ,EAAMrC,KAAK,CACTsC,GAAI,eACJC,MAAO,sBACPC,OACE,iNACH,EACDH,EAAMrC,KAAK,CACTsC,GAAI,qBACJC,MAAO,4BACPC,OACEzE,EAAOU,kBAAkBkB,OAAS,EAC9B5B,EAAOU,kBAAkBqE,KAAK;CAAI,EAClC,kEACP,EACDT,EAAMrC,KAAK,CACTsC,GAAI,iBACJC,MAAO,kBACPC,OAAQ9E,EAA2BkB,oBAAmB,EAAGkE,KAAK;CAAI,EACnE,EACMT,CACT,GCjQF,IAAMU,EAAyB,SAMlBC,EAAP,MAAOA,CAA0B,CAKrC,OAAOC,gBAAgBC,EAAe,CACpC,OAAOA,EAAQC,KAAI,IAAOJ,CAC5B,CAKA,OAAOK,iBAAiBC,EAIvB,CACC,IAAMC,EAAsD,CAC1DC,MAAOF,EAAOG,QAAQD,MACtBE,IAAKJ,EAAOG,QAAQC,IACpBC,UAAWL,EAAOG,QAAQE,UAC1BC,UAAWN,EAAOG,QAAQG,WAEtBC,EACJZ,EAA2Ba,iBAAiBR,EAAOS,KAAK,EACpDP,EAAgB,OAAOF,EAAOG,QAAQD,OAAU,SAAWF,EAAOG,QAAQD,MAAQ,GAClFQ,EAA8Bf,EAA2BgB,yBAAyBT,CAAK,EACvFU,EAA2BjB,EAA2BkB,oBAAmB,EACzEC,EAA6CnB,EAA2BoB,eAAe,CAC3Fd,eAAgBA,EAChBe,aAAchB,EAAOgB,aACrBT,YAAaA,EACbG,kBAAmBA,EACpB,EACD,MAAO,CACLO,QACE,wFACFD,aAAchB,EAAOgB,aACrBf,eAAgBA,EAChBM,YAAaA,EACbG,kBAAmBA,EACnBE,eAAgBA,EAChBE,UAAWA,EAEf,CAKA,OAAOI,0BAA0BC,EAAkD,CACjF,IAAIC,EACJ,GAAI,CACFA,EAAOC,KAAKC,UAAUH,EAAa,KAAM,CAAC,CAC5C,MAAQ,CACNC,EAAO,+CACT,CACA,MAAO;;;EAA6BA,CAAI,EAC1C,CAKQ,OAAOZ,iBAAiBC,EAAyB,CACvD,GAAIA,GAAS,MAAQ,CAACA,EAAMX,KAAI,EAC9B,MAAO,CAAA,EAET,IAAMyB,EAAkBd,EAAMe,MAAM;CAAI,EAAEC,IAAKC,GAAsBA,EAAE5B,KAAI,CAAE,EAAE6B,OAC5ED,GAAuBA,EAAEE,OAAS,CAAC,EAEhCC,EAA4C,CAAA,EAClD,QAAWC,KAAQP,EAAO,CACxB,IAAMQ,EACJpC,EAA2BqC,kBAAkBF,CAAI,EAC/CC,GAAU,MACZF,EAAOI,KAAKF,CAAM,CAEtB,CACA,OAAOF,CACT,CAKQ,OAAOG,kBAAkBF,EAAY,CAE3C,IAAMI,EAAsCJ,EAAKK,MAAM,iBAAiB,EAClEC,EACJF,GAAc,MAAQA,EAAW,CAAC,GAAK,KAAOA,EAAW,CAAC,EAAEpC,KAAI,EAAK,KACvE,GAAIsC,GAAW,MAAQzC,EAA2B0C,wBAAwBD,CAAO,EAAG,CAClF,IAAME,EAAM3C,EAA2B4C,gBAAgBH,CAAO,EAC9D,GAAIE,GAAO,KACT,MAAO,CACLE,QAASV,EACT1B,IAAKkC,EAAIlC,IACT0B,KAAMQ,EAAIR,KACVW,OAAQH,EAAIG,OACZC,WAAY/C,EAA2BgD,kBAAkBL,EAAIlC,GAAG,EAGtE,CAEA,IAAMwC,EAAmCd,EAAKK,MAAM,kBAAkB,EACtE,GAAIS,GAAW,MAAQA,EAAQ,CAAC,GAAK,KAAM,CACzC,IAAMC,EAAgBD,EAAQ,CAAC,EAAE9C,KAAI,EACrC,GAAIH,EAA2B0C,wBAAwBQ,CAAK,EAAG,CAC7D,IAAMP,EAAM3C,EAA2B4C,gBAAgBM,CAAK,EAC5D,GAAIP,GAAO,KACT,MAAO,CACLE,QAASV,EACT1B,IAAKkC,EAAIlC,IACT0B,KAAMQ,EAAIR,KACVW,OAAQH,EAAIG,OACZC,WAAY/C,EAA2BgD,kBAAkBL,EAAIlC,GAAG,EAGtE,CACF,CACA,MAAO,CACLoC,QAASV,EACTY,WAAY,QAEhB,CAEQ,OAAOL,wBAAwBS,EAAS,CAC9C,MAAO,eAAeC,KAAKD,CAAC,GAAKA,EAAEE,SAAS,MAAM,CACpD,CAEQ,OAAOT,gBAAgBO,EAAS,CAEtC,IAAMG,EAAa,qBACbC,EAA6BJ,EAAEX,MAAMc,CAAE,EAC7C,GAAIC,GAAK,MAAQA,EAAE,CAAC,GAAK,MAAQA,EAAE,CAAC,GAAK,MAAQA,EAAE,CAAC,GAAK,KACvD,OAAO,KAET,IAAM9C,EAAc8C,EAAE,CAAC,EACjBpB,EAAeqB,OAAOC,SAASF,EAAE,CAAC,EAAG,EAAE,EACvCT,EAAiBU,OAAOC,SAASF,EAAE,CAAC,EAAG,EAAE,EAC/C,MAAI,CAACC,OAAOE,SAASvB,CAAI,GAAK,CAACqB,OAAOE,SAASZ,CAAM,EAC5C,KAEF,CAAErC,IAAKA,EAAK0B,KAAMA,EAAMW,OAAQA,CAAM,CAC/C,CAEQ,OAAOE,kBAAkBvC,EAAW,CAC1C,IAAMkD,EAAgBlD,EAAImD,YAAW,EACrC,OAAID,EAAMN,SAAS,OAAO,GAAKM,EAAME,SAAS,KAAK,EAC1C,OAELF,EAAMN,SAAS,QAAQ,GAAKM,EAAMN,SAAS,QAAQ,EAC9C,QAEF,OACT,CAKQ,OAAOrC,yBAAyBT,EAAa,CACnD,IAAMuD,EAAqBvD,EAAMwD,WAAW,GAAG,EAAIxD,EAASA,EAAM0B,OAAS,EAAI,IAAI1B,CAAK,GAAK,GACvFyD,EAA6C,CAAC,GAAGC,CAA+B,EAAEC,KACtF,CAACC,EAAqCC,IACpCA,EAAEC,OAAOpC,OAASkC,EAAEE,OAAOpC,MAAM,EAErC,QAAWqC,KAASN,EAClB,GAAIM,EAAMD,SAAW,MAGjBP,IAAeQ,EAAMD,QAAUP,EAAWC,WAAW,GAAGO,EAAMD,MAAM,GAAG,GACzE,MAAO,CAACC,EAAMC,IAAI,EAGtB,GAAIT,IAAe,IAAMA,IAAe,IAAK,CAC3C,IAAMU,EAAqDP,EAAgCQ,KACxFC,GAAiDA,EAAEL,SAAW,GAAG,EAEpE,GAAIG,GAAQ,KACV,MAAO,CAACA,EAAKD,IAAI,CAErB,CACA,MAAO,CAAA,CACT,CAEQ,OAAOrD,qBAAmB,CAChC,MAAO,CACL,uHACA,+HACA,kHACA,qKAAgK,CAEpK,CAEQ,OAAOE,eAAef,EAK7B,CACC,IAAMsE,EAAyC,CAAA,EAC/CA,EAAMrC,KAAK,CACTsC,GAAI,gBACJC,MAAO,iBACPC,OAAQpD,KAAKC,UAAUtB,EAAOC,eAAgB,KAAM,CAAC,EACtD,EACDqE,EAAMrC,KAAK,CACTsC,GAAI,kBACJC,MAAO,mBACPC,OACEzE,EAAOgB,cAAgB,MAAQhB,EAAOgB,aAAalB,KAAI,EAAG8B,OAAS,EAC/D5B,EAAOgB,aAAalB,KAAI,EACxB,sFACP,EACD,IAAM4E,EACJ1E,EAAOO,YAAYqB,OAAS,EACxB5B,EAAOO,YACNoE,MAAM,EAAG,CAAC,EACVlD,IAAKmD,GAA8C,CAClD,IAAMC,EAAkB,CAACD,EAAElC,UAAU,EACrC,OAAIkC,EAAExE,KAAO,MACXyE,EAAM5C,KAAK2C,EAAExE,GAAG,EAEdwE,EAAE9C,MAAQ,MACZ+C,EAAM5C,KAAK,QAAQ6C,OAAOF,EAAE9C,IAAI,CAAC,EAAE,EAE9B,GAAG8C,EAAEpC,OAAO;WAASqC,EAAME,KAAK,KAAK,CAAC,EAC/C,CAAC,EACAA,KAAK;;CAAM,EACZ,2BACNT,OAAAA,EAAMrC,KAAK,CACTsC,GAAI,uBACJC,MAAO,wBACPC,OAAQC,EACT,EACDJ,EAAMrC,KAAK,CACTsC,GAAI,qBACJC,MAAO,4BACPC,OACEzE,EAAOU,kBAAkBkB,OAAS,EAC9B5B,EAAOU,kBAAkBqE,KAAK;CAAI,EAClC,kEACP,EACDT,EAAMrC,KAAK,CACTsC,GAAI,iBACJC,MAAO,kBACPC,OAAQ9E,EAA2BkB,oBAAmB,EAAGkE,KAAK;CAAI,EACnE,EACMT,CACT,GCnQI,IAAOU,EAAP,KAA4B,CAKhC,OAAOC,SAASC,EAAU,CACxB,OAAOA,IAAM,MAAQ,OAAOA,GAAM,UAAY,CAACC,MAAMC,QAAQF,CAAC,CAChE,GCNK,IAAMG,EAAiD,2CAKjDC,EAA0C,oCAK1CC,EAA4C,6BCEzD,SAASC,EAA6BC,EAAa,CACjD,GAAI,CAACC,EAAsBC,SAASF,CAAI,EACtC,OAAO,KAET,IAAMG,EAAeH,EAAKI,WAC1B,OAAI,OAAOD,GAAQ,UAAY,CAACA,EAAIE,KAAI,EAAGC,OAClC,KAEFH,EAAIE,KAAI,CACjB,CAMM,IAAOE,EAAP,MAAOA,CAAsC,CAKjD,OAAOC,0BAA0BC,EAA0B,CACzD,GAAI,EAAEA,EAAOC,iBAAiBC,GAC5B,OAAO,KAET,IAAMC,EAAsBb,EAA6BU,EAAOC,MAAMA,KAAK,EAC3E,OAAIE,GAAQ,KACH,KAEFL,EAAuCM,wBAAwB,CAAEC,UAAWF,CAAI,CAAE,CAC3F,CAKA,OAAOG,6BAA6BN,EAA0B,CAC5D,GAAI,EAAEA,EAAOC,iBAAiBC,GAC5B,MAAO,GAET,IAAMC,EAAsBb,EAA6BU,EAAOC,MAAMA,KAAK,EAC3E,OAAIE,GAAQ,KACH,GAELA,IAAS,4BAET,0JAIAA,IAAS,2BACJ,2GAELA,IAAS,2BACJ,oFAEF,EACT,CAKQ,OAAOC,wBAAwBJ,EAEtC,CACC,IAAMO,EAAcT,EAAuCU,kBAAiB,EAC5E,OAAIR,EAAOK,YAAc,4BAChB,CACLI,QAAS,gDACTC,UAAW,CACT,mJAEA,mVAGA,0MAEA,sKAEA,+IACmB,EAErBC,MAAOJ,GAGPP,EAAOK,YAAc,2BAChB,CACLI,QAAS,yCACTC,UAAW,CACT,kNACgF,EAElFC,MAAOJ,GAGPP,EAAOK,YAAc,2BAChB,CACLI,QAAS,gDACTC,UAAW,CACT,kNAC2F,EAE7FC,MAAOJ,GAGPP,EAAOK,YAAc,0BAChB,CACLI,QAAS,8CACTC,UAAW,CACT,mWAGA,kNAC2F,EAE7FC,MAAOJ,GAGJ,IACT,CAKQ,OAAOC,mBAAiB,CAC9B,MAAO,CACL,CAAEI,MAAO,wCAAoCC,KAAMC,CAAsC,EACzF,CAAEF,MAAO,0CAAsCC,KAAME,CAA+B,EACpF,CAAEH,MAAO,wCAAoCC,KAAMG,CAAiC,CAAE,CAE1F,GC9IF,IAAAC,EAA2B,OAM3B,IAAMC,EAAiC,sDAGjCC,EAAiC,GAKvC,SAASC,EAAgCC,EAAa,CACpD,GAAI,CAACC,EAAsBC,SAASF,CAAI,EACtC,OAAO,OAAOA,GAAS,SAAWA,EAAO,KAI3C,GAAI,OAAOA,EAAKG,UAAa,UAAYH,EAAKG,SAASC,KAAI,EAAI,OAAOJ,EAAKG,SAASC,KAAI,EACxF,GAAI,OAAOJ,EAAKK,OAAU,UAAYL,EAAKK,MAAMD,KAAI,EAAI,OAAOJ,EAAKK,MAAMD,KAAI,EAC/E,GAAI,OAAOJ,EAAKM,SAAY,UAAYN,EAAKM,QAAQF,KAAI,EAAI,OAAOJ,EAAKM,QAAQF,KAAI,EAGrF,GAAIJ,EAAKK,OAAS,MAAQ,OAAOL,EAAKK,OAAU,SAAU,CACxD,IAAME,EAAwBR,EAAgCC,EAAKK,KAAK,EACxE,GAAIE,EAAQ,OAAOA,CACrB,CACA,OAAO,IACT,CAOA,SAASC,EAAsBH,EAAc,CAC3C,GAAIA,aAAiBI,EAAmB,CACtC,IAAMC,EAA6BX,EAAgCM,EAAMA,KAAK,EAC9E,OAAOM,EAA2BC,oBAAoBP,EAAOK,CAAW,CAC1E,CACA,GAAI,CACF,IAAMG,EACHC,aAAuEC,gBAC1E,GAAI,OAAOF,GAAW,WAAY,CAChC,IAAMG,EAAcH,EAAOR,CAAK,EAChC,GAAIW,GAAOA,IAAQ,kBACjB,OAAOA,CAEX,CACF,MAAQ,CACN,CAEF,GAAIX,aAAiBY,MACnB,OAAOZ,EAAMC,SAAWT,EAE1B,GAAI,CAACI,EAAsBC,SAASG,CAAK,EACvC,OAAOa,OAAOb,CAAK,GAAKR,EAE1B,GAAI,OAAOQ,EAAMC,SAAY,UAAYD,EAAMC,QAAQF,KAAI,GAAMC,EAAMC,UAAY,kBACjF,OAAOD,EAAMC,QAEf,GAAI,OAAOD,EAAMA,OAAU,UAAYA,EAAMA,MAAMD,KAAI,GAAMC,EAAMA,QAAU,kBAC3E,OAAOA,EAAMA,MAEf,GAAI,OAAOA,EAAMc,QAAW,UAAYd,EAAMc,OAAOf,KAAI,GAAMC,EAAMc,SAAW,kBAC9E,OAAOd,EAAMc,OAEf,GAAI,CACF,IAAMC,EAAeC,KAAKC,UAAUjB,CAAK,EACzC,GAAIe,GAAQA,IAAS,MAAQA,IAAS,kBACpC,OAAOA,CAEX,MAAQ,CACN,CAEF,OAAOvB,CACT,CAQA,SAAS0B,GAA8BlB,EAAc,CACnD,GAAI,CAACS,aAAWU,YAAYnB,CAAK,EAC/B,OAAO,KAET,IAAMoB,EAAwBpB,EACxBqB,EAA6BD,EAAUE,OAC7C,GAAIC,MAAMC,QAAQH,CAAG,GAAKA,EAAII,OAAS,EAAG,CACxC,IAAMC,EAAgBL,EAAIA,EAAII,OAAS,CAAC,EACxC,GAAIC,GAAQ,MAAQA,IAAS1B,EAC3B,OAAO0B,CAEX,CACA,OAAON,EAAUpB,KACnB,CAEA,SAAS2B,EAAe3B,EAAc,CACpC,GAAI,CAACJ,EAAsBC,SAASG,CAAK,EACvC,OAAO,KAET,IAAM4B,EAAoBV,GAA8BlB,CAAK,EAC7D,GAAI4B,GAAY,MAAQA,IAAa5B,EACnC,OAAO4B,EAET,IAAMC,EAAqB7B,EAAMA,MACjC,GAAI6B,GAAa,MAAQA,IAAc7B,EACrC,OAAI6B,aAAqBC,KAChB,KAEFD,EAET,GAAI7B,aAAiBY,OAAS,UAAWZ,EAAO,CAC9C,IAAM+B,EAAc/B,EAAsCgC,MAC1D,GAAID,GAAK,MAAQA,IAAM/B,EACrB,OAAO+B,CAEX,CACA,OAAO,IACT,CAKA,SAASE,GAAsBjC,EAAc,CAC3C,GAAI,CAACJ,EAAsBC,SAASG,CAAK,EACvC,OAEF,IAAMkC,EAAclC,EAAMmC,aAC1B,GAAID,EAAAA,GAAM,MAAQ,CAACrB,OAAOqB,CAAE,EAAEnC,KAAI,EAAG0B,QAGrC,MAAO;EAAmBZ,OAAOqB,CAAE,CAAC,EACtC,CAKA,SAASE,GAAqBpC,EAAc,CAI1C,GAHIA,aAAiBY,OAAS,OAAOZ,EAAMqC,OAAU,UAAYrC,EAAMqC,MAAMtC,KAAI,EAAG0B,OAAS,GAGzF7B,EAAsBC,SAASG,CAAK,GAAK,OAAOA,EAAMqC,OAAU,UAAYrC,EAAMqC,MAAMtC,KAAI,EAAG0B,OAAS,EAC1G,OAAOzB,EAAMqC,KAGjB,CAKA,SAASC,EAA8BtC,EAAgBuC,EAAa,CAClE,GAAIvC,GAAS,MAAQuC,GAAS,EAC5B,MAAO,CAAA,EAET,IAAMC,EAAmB,CAAA,EACnBC,EAAiCR,GAAsBjC,CAAK,EAC9DyC,GAAc,MAChBD,EAAOE,KAAKD,CAAU,EAExB,IAAME,EAA+BP,GAAqBpC,CAAK,EAC3D2C,GAAY,MACdH,EAAOE,KAAKC,CAAQ,EAEtB,IAAMzC,EAAkByB,EAAe3B,CAAK,EAC5C,OAAIE,GAAU,OAGdsC,EAAOE,KAAK,EAAE,EACdF,EAAOE,KAAK,mBAAmB,EAC/BF,EAAOE,KAAK,EAAE,EACdF,EAAOE,KAAK,GAAGJ,EAA8BpC,EAAQqC,EAAQ,CAAC,CAAC,GACxDC,CACT,CAKM,IAAOI,EAAP,MAAOA,CAAsB,CAMnC,OAAOC,8BACL7C,EACA8C,EAAmBrD,EAAsB,CAEzC,IAAMsD,EAAe5C,EAAsBH,CAAK,EAChD,GAAI8C,GAAY,EACd,OAAOC,EAET,IAAM7C,EAAkByB,EAAe3B,CAAK,EAC5C,GAAIE,GAAU,KACZ,OAAO6C,EAGT,IAAMC,EADuBJ,EAAuBC,8BAA8B3C,EAAQ4C,EAAW,CAAC,EACjE/C,KAAI,EACzC,GAAIiD,EAAQvB,OAAS,GAAKuB,IAAYD,EAAM,CAE1C,GAAIC,IAAYxD,EACd,OAAOuD,EAKT,IAAME,EAAyBF,EAAO,sBACtC,OAAIC,EAAQE,WAAWD,CAAc,EAC5BD,EAEF,GAAGD,CAAI,sBAAiBC,CAAO,EACxC,CACA,OAAOD,CACT,CAOA,OAAOI,oBAAoBC,EAAc,CACvC,GAAIA,GAAU,KACZ,MAAO,GAET,GAAI,OAAOA,GAAU,SAAU,CAC7B,IAAMC,EAAYD,EAAMrD,KAAI,EAC5B,MAAI,CAACsD,GAAKA,IAAM,kBACP7D,EAEF4D,CACT,CACA,GAAI,OAAOA,GAAU,SACnB,GAAI,CAEF,OADqBpC,KAAKC,UAAUmC,EAAO,KAAM,CAAC,CAEpD,MAAQ,CACN,OAAO5D,CACT,CAEF,OAAOqB,OAAOuC,CAAK,CACrB,CAMA,OAAOE,0BAA0BtD,EAAc,CAC7C,OAAO4C,EAAuBC,8BAA8B7C,CAAK,CACnE,CAMA,OAAOuD,kBAAkBvD,EAAc,CAErC,IAAMwD,EADkBlB,EAA8BtC,EAAOP,CAAsB,EACtDgE,KAAK;CAAI,EAAE1D,KAAI,EAC5C,GAAKyD,EAAO/B,OAGZ,OAAO+B,CACT,GCvQA,IAAAE,EAAiC,OCA3B,IAAOC,EAAP,KAAiD,CAKrD,OAAOC,sBAAsBC,EAAe,CAE1C,IAAMC,EAAYD,EAAQE,KAAI,EAAGC,YAAW,EAC5C,OAAKF,EAAEG,OAGHH,GAAAA,EAAEI,SAAS,gBAAgB,GAG3BJ,EAAEI,SAAS,YAAY,GAAKJ,EAAEI,SAAS,UAAU,GAGjDJ,IAAM,WAGNA,EAAEI,SAAS,iBAAiB,GAG5BJ,EAAEI,SAAS,YAAY,GAAKJ,EAAEI,SAAS,SAAS,GAd3C,EAkBX,GC3BK,IAAMC,EAA4C,iBC8CzD,IAAMC,GAA4B,IAOrBC,GAAiB,IAAA,CAAxB,MAAOA,CAAiB,CAGpBC,QAAkB,GAAGC,EAAYC,IAAIF,OAAO,UAEnCG,KAAmBC,EAAOC,CAAU,EAMrDC,WAAWC,EAA0C,CASnD,IAAMC,EAAmBD,GAAQE,OAASX,GACpCY,EAAoBH,GAAQI,KAC9BC,KAAKC,MAAMN,EAAOI,KAAOH,CAAQ,EACjC,EAEEM,EACJ,GAAG,KAAKd,OAAO,+BAA+BQ,CAAQ,IAAIE,CAAS,GAErE,OAAOK,EACL,KAAKZ,KAAKa,IAAgDF,CAAG,EAAEG,KAC7DC,EAAKC,IAGC,CACJC,QAASD,EAAME,OAAS,CAAA,GAAIH,IACzBI,GACCvB,EAAkBwB,oBAAoBD,CAAG,CAAC,EAE9CE,MAAO,OAAOL,EAAMK,OAAU,SAAWL,EAAMK,MAAQ,GACvD,CAAC,CACJ,CAEL,CAQAC,oBAAkB,CAChB,OAAOV,EACL,KAAKZ,KAAKa,IACR,GAAG,KAAKhB,OAAO,kBAAkB,EACjCiB,KACAC,EAAKQ,GACHA,EAAKC,aAAe,CAAA,CAAE,CACvB,CACF,CAEL,CAUAC,mBAAmBC,EAAsC,CACvD,IAAMf,EAAc,GAAG,KAAKd,OAAO,qBAAqB8B,mBAAmBD,CAAQ,CAAC,GACpF,OAAOd,EACL,KAAKZ,KAAKa,IAA8BF,CAAG,CAAC,CAEhD,CAKAiB,YAAYC,EAAU,CACpB,OAAOjB,EACL,KAAKZ,KAAKa,IACR,GAAG,KAAKhB,OAAO,oBAAoBgC,CAAE,EAAE,EACvCf,KAAKC,EAAI,IAAA,EAAqB,CAAC,CAAC,CAEtC,CAKAe,iBAAe,CACb,OAAOlB,EACL,KAAKZ,KAAKa,IACR,GAAG,KAAKhB,OAAO,sBAAsB,EACrCiB,KAAKC,EAAI,IAAA,EAAqB,CAAC,CAAC,CAEtC,CAKAgB,cAAcF,EAAYG,EAAe,CACvC,IAAMC,EAAkBJ,EAAGK,KAAI,EAC/B,OAAOtB,EACL,KAAKZ,KAAKmC,KACR,GAAG,KAAKtC,OAAO,uBAAuB8B,mBAAmBM,CAAO,CAAC,GACjE,CAAED,OAAQA,CAAM,CAAE,CACnB,CAEL,CAMAI,YACEC,EAA2B,CAG3B,IAAMC,EAA0BD,EAAQE,UACpC,IAAIF,EAAQE,SAAS,KAAKF,EAAQG,OAAO,GACzCH,EAAQG,QAENC,EAA4CC,IAAA,GAC5CL,EAAQM,eAAiB,CAAA,GACzBN,EAAQO,wBAA0B,KAAOP,EAAQO,uBAAyB,CAAA,GAG1EC,EAA6C,CACjDC,UAAWT,EAAQS,UACnBC,MAAOV,EAAQU,MACfN,iBAAkBA,GAEhBJ,EAAQE,YACVM,EAAkBN,UAAYF,EAAQE,WAExC,IAAMS,EAAgC,CACpCR,QAASF,EACTW,OAAQZ,EAAQY,OAChBC,WAAYb,EAAQc,MAChBd,EAAQc,MAAMC,MAAM;CAAI,EACxB,CAAA,EACJP,kBAAmBA,GAGrB,OAAOjC,EACL,KAAKZ,KAAKmC,KACR,GAAG,KAAKtC,OAAO,aACfmD,CAAI,EACJlC,KACAC,EAAI,KAA8B,CAAEsC,SAAU,EAAI,EAAG,CAAC,CACvD,CAEL,CAMQ,OAAOjC,oBACbD,EAAmC,CAEnC,IAAMmC,EAAsCC,EAAsBC,SAASrC,EAAI0B,iBAAiB,EAC5F1B,EAAI0B,kBACJ,CAAA,EAEEY,EAA0BH,EAAWb,iBACrCA,EAAwDc,EAAsBC,SAASC,CAAc,EACvGA,EACAC,OAEEC,EACJ/D,EAAkBgE,uBAAuBN,EAAWR,SAAS,EACzDe,EACJjE,EAAkBgE,uBAAuBN,EAAWP,KAAK,EAErDe,EAA+BlE,EAAkBgE,uBACrDN,EAAWS,CAAiC,CAAC,EAG/C,MAAO,CACLC,IAAK7C,EAAI6C,IACTxB,QAAS5C,EAAkBqE,yBAAyB9C,CAAG,EACvDgC,MAAOvD,EAAkBsE,2BAA2B/C,CAAG,EACvD8B,OAAQrD,EAAkBuE,wBAAwBhD,CAAG,EACrDiD,gBAAiBjD,EAAIkD,MACrBC,iBAAkBnD,EAAIoD,eACtBC,UAAWrD,EAAIsD,UACfC,OAAQ9E,EAAkBgE,uBAAuBzC,EAAIuD,MAAM,EAC3D5B,UACElD,EAAkBgE,uBAAuBzC,EAAI2B,SAAS,GAAKa,EAC7DZ,MAAOnD,EAAkBgE,uBAAuBzC,EAAI4B,KAAK,GAAKc,EAC9DpB,iBAAkBA,EAClBkC,eAAgBb,EAGhBc,SAAUhF,EAAkBiF,gBAAgB1D,EAAIyD,QAAQ,EACxDrC,UAAW3C,EAAkBgE,uBAAuBzC,EAAI2D,UAAU,EAEtE,CAOQ,OAAOD,gBAAgBE,EAAY,CACzC,GAAI,CAACC,MAAMC,QAAQF,CAAG,EACpB,MAAO,CAAA,EAET,IAAMG,EAAgB,CAAA,EACtB,QAAWC,KAAQJ,EAAK,CACtB,GAAI,OAAOI,GAAS,UAAYA,EAAKC,OAAS,EAAG,CAC/CF,EAAIG,KAAKF,CAAI,EACb,QACF,CACA,GAAI5B,EAAsBC,SAAS2B,CAAI,EAAG,CACxC,IAAMG,EAAkBH,EAAKI,MACzB,OAAOD,GAAW,UAAYA,EAAOF,OAAS,GAChDF,EAAIG,KAAKC,CAAM,CAEnB,CACF,CACA,OAAOJ,CACT,CAKQ,OAAOjB,yBACb9C,EAAmC,CAEnC,IAAMqE,EAA+B5F,EAAkBgE,uBACrDzC,EAAIqB,OAAO,EAEb,GAAIgD,GAAY,KACd,OAAOA,EAET,IAAMC,EAAqC7F,EAAkBgE,uBAC3DzC,EAAIuE,QAAQ,EAEd,OAAID,GAIF7F,EAAkBgE,uBAChBhE,EAAkB+F,gCAAgCxE,EAAIyE,KAAK,CAAC,GAE9DhG,EAAkBgE,uBAChBhE,EAAkB+F,gCAAgCxE,EAAI0E,OAAO,CAAC,CAGpE,CAKQ,OAAO1B,wBACbhD,EAAmC,CAEnC,IAAM2E,EAAiClG,EAAkBgE,uBACvDzC,EAAI8B,MAAM,EAEZ,OAAI6C,GAGGlG,EAAkBgE,uBAAuBzC,EAAI4E,gBAAgB,CACtE,CAKQ,OAAO7B,2BACb/C,EAAmC,CAEnC,IAAM6E,EAAwB7E,EAAI+B,WAClC,GAAI,OAAO8C,GAAiB,UAAYA,EAAa9D,KAAI,EAAGkD,OAAS,EACnE,OAAOY,EAAa9D,KAAI,EAE1B,IAAM+D,EACJjB,MAAMC,QAAQe,CAAY,GAAKA,EAAaZ,OAAS,EACjDY,EAAaE,KAAK;CAAI,EACtBxC,OACN,GAAIuC,GAAa,MAAQA,EAAU/D,KAAI,EAAGkD,OAAS,EACjD,OAAOa,EAET,GAAI,OAAO9E,EAAIgC,OAAU,UAAYhC,EAAIgC,MAAMjB,KAAI,EAAGkD,OAAS,EAC7D,OAAOjE,EAAIgC,MAEb,IAAMgD,EAAsCvG,EAAkBgE,uBAC5DhE,EAAkBwG,8BAA8BjF,EAAIyE,KAAK,CAAC,EAE5D,OAAIO,GAGGvG,EAAkBgE,uBACvBhE,EAAkBwG,8BAA8BjF,EAAI0E,OAAO,CAAC,CAEhE,CAKQ,OAAOF,gCAAgCU,EAAc,CAC3D,GAAI,CAAC9C,EAAsBC,SAAS6C,CAAK,EACvC,OAEF,IAAMC,EAAeD,EAAM7D,QAC3B,GAAI,OAAO8D,GAAQ,UAAYA,EAAIpE,KAAI,EAAGkD,OAAS,EACjD,OAAOkB,EAAIpE,KAAI,EAEjB,IAAMqE,EAAiBF,EAAMX,SAC7B,GAAI,OAAOa,GAAU,UAAYA,EAAMrE,KAAI,EAAGkD,OAAS,EACrD,OAAOmB,EAAMrE,KAAI,CAGrB,CAKQ,OAAOkE,8BAA8BC,EAAc,CACzD,GAAI,CAAC9C,EAAsBC,SAAS6C,CAAK,EACvC,OAEF,IAAMG,EAAcH,EAAMlD,MAC1B,GAAI,OAAOqD,GAAO,UAAYA,EAAGtE,KAAI,EAAGkD,OAAS,EAC/C,OAAOoB,EAAGtE,KAAI,CAGlB,CAKQ,OAAO0B,uBAAuByC,EAAc,CAClD,GAAI,OAAOA,GAAU,SACnB,OAEF,IAAMpE,EAAkBoE,EAAMnE,KAAI,EAClC,GAAKD,EAAQmD,OAGb,OAAOnD,CACT,4CAzVWrC,EAAiB,6BAAjBA,EAAiB6G,QAAjB7G,EAAiB8G,UAAAC,WADJ,MAAM,CAAA,SACnB/G,CAAiB,GAAA,EHtB9B,IAAagH,IAA+B,IAAA,CAAtC,MAAOA,CAA+B,CAEzBC,UAA+BC,EAAOC,CAAiB,EACvDC,OAAiBF,EAAOG,CAAM,EAC9BC,mBAA8CJ,EAC7DK,CAAuB,EAIhBC,SAAWC,EAA2C,CAAA,CAAE,EAMxDC,+BAAiCD,EAAgD,IAAI,EAGtFE,mBAA6B,EAG7B,OAAgBC,iBAA2B,GAG3C,OAAgBC,cAAwB,GAAKC,SAG7C,OAAgBC,gBAA0B,IAM1CC,2BAAsC,GAG9CC,2BAAyB,CACvB,OAAO,KAAKD,0BACd,CAGAE,oBAAkB,CAChB,KAAKF,2BAA6B,EACpC,CAGAG,kBAAgB,CACd,KAAKH,2BAA6B,EACpC,CAMAI,mBAAiB,CACf,IAAMC,EAAgB,OAAO,KAAKjB,QAAQkB,KAAQ,SAAW,KAAKlB,OAAOkB,IAAM,GACzEA,EAAc,OAAOC,OAAW,KAAeA,OAAOC,UAAUC,KAAOF,OAAOC,SAASC,KAAO,GAC9FC,EAAoB,OAAOC,UAAc,KAAeA,UAAUD,UAAYC,UAAUD,UAAY,GACpGE,EAAoB,IAAIC,KAAI,EAAGC,YAAW,EAChD,MAAO,CAAET,MAAOA,GAASU,OAAWT,IAAKA,GAAOS,OAAWL,UAAWA,GAAaK,OAAWH,UAAWA,CAAS,CACpH,CAKQI,sBACNC,EACAC,EAAyC,CAEzC,IAAMC,EAAkB,CAAC,WAAW,EAChCD,EAAQb,OAAS,MAAQa,EAAQb,MAAMe,OAAS,GAClDD,EAAME,KAAK,UAAUH,EAAQb,KAAK,EAAE,EAElCa,EAAQZ,KAAO,MAAQY,EAAQZ,IAAIc,OAAS,GAC9CD,EAAME,KAAK,QAAQH,EAAQZ,GAAG,EAAE,EAE9BY,EAAQR,WAAa,MAAQQ,EAAQR,UAAUU,OAAS,GAC1DD,EAAME,KAAK,eAAeH,EAAQR,SAAS,EAAE,EAE3CQ,EAAQN,WAAa,MAAQM,EAAQN,UAAUQ,OAAS,GAC1DD,EAAME,KAAK,cAAcH,EAAQN,SAAS,EAAE,EAE9C,IAAMU,EAAiBH,EAAMI,KAAK;CAAI,EAChCC,EAAgBP,GAAc,MAAQA,EAAWQ,KAAI,EAAGL,OAAS,EAAKH,EAAWQ,KAAI,EAAK,aAChG,MAAO,GAAGH,CAAM;;EAAOE,CAAI,EAC7B,CAMAE,4BAA4BC,EAAgBC,EAAc,CACxD,IAAMV,EAA4C,KAAKd,kBAAiB,EAClEyB,EAAsBC,EAAuBC,0BAA0BJ,CAAK,EAM5EK,EACJhD,EAAgCiD,uBAAuBN,EAAOE,CAAW,EACrEK,EAA+BJ,EAAuBK,kBAAkBR,CAAK,EAC7ES,EAAgB,KAAKpB,sBAAsBkB,EAAUhB,CAAO,EAE5DmB,EACJrD,EAAgCsD,iBAAiBX,CAAK,EAClDY,EACJvD,EAAgCwD,yBAAyBb,CAAK,EAChE,MAAO,CACLK,QAAAA,EACAI,MAAAA,EACAR,OAAQA,GAAU,aAClBS,UAAWA,EACXE,uBAAwBA,EACxBE,cAAevB,EAEnB,CAQA,OAAOe,uBAAuBN,EAAgBE,EAAmB,CAC/D,GAAI,EAAEF,aAAiBe,GACrB,OAAOb,EAET,IAAMc,EAAkBhB,EAAMrB,IAAM,QAAQqB,EAAMrB,GAAG,GAAK,WACpDsC,EAAqB,WAAWjB,EAAMkB,MAAM,GAClD,MAAO,GAAGhB,CAAW,MAAMc,CAAO,MAAMC,CAAU,EACpD,CAKQ,OAAON,iBAAiBX,EAAc,CAC5C,GAAIA,GAAS,MAAQ,OAAOA,GAAU,SACpC,OAEF,IAAMmB,EAA+BnB,EACrC,GAAI,OAAOmB,EAAIT,WAAc,UAAYS,EAAIT,UAAUjB,OAAS,EAC9D,OAAO0B,EAAIT,UAEb,GAAI,OAAOS,EAAIC,YAAe,UAAYD,EAAIC,WAAW3B,OAAS,EAChE,OAAO0B,EAAIC,UAGf,CAKQ,OAAOP,yBAAyBb,EAAc,CACpD,GAAIA,GAAS,MAAQ,OAAOA,GAAU,SACpC,OAEF,IAAMmB,EAA+BnB,EACrC,GAAImB,EAAIE,mBAAqB,MAAQ,OAAOF,EAAIE,mBAAsB,SACpE,OAAOF,EAAIE,iBAGf,CAMAC,6BAA6BC,EAI5B,CACC,IAAMhC,EAA4C,KAAKd,kBAAiB,EAClEgC,EAAgB,KAAKpB,sBAAsBkC,EAAOd,MAAOlB,CAAO,EACtE,MAAO,CACLc,QAASkB,EAAOlB,QAChBI,MAAAA,EACAR,OAAQsB,EAAOtB,OACfa,cAAevB,EAEnB,CAUAiC,UAAUxB,EAAgBC,EAAe,CACvCwB,WAAW,IAAW,CACpB,GAAI,CAGF,IAAIC,EAAyBvB,EAAuBC,0BAA0BJ,CAAK,EAC7E2B,EAA+BC,EAAuCC,6BAA6B,CACvG7B,MAAOA,EACR,EAID,GAHI2B,EAAqBlC,OAAS,IAChCiC,EAAiBA,EAAiBC,GAEhC,EAAE3B,aAAiBe,IAInB,EAFA,KAAKpD,mBAAmBmE,UAAS,EAAGC,KAAKC,0CAA4C,KAGlFC,EAA2CC,sBAAsBR,CAAc,EAClF,CACI1B,aAAiBmC,OACnBC,WAASpC,MAAM,SAAUC,GAAU,aAAcD,CAAK,EAExD,MACF,CAGF,IAAMT,EAA4C,KAAKd,kBAAiB,EACpE4D,EACJ,GAAIC,EAA2BC,gBAAgBb,CAAc,EAC3D,GAAI,CACFW,EAAoBC,EAA2BE,iBAAiB,CAC9D/B,MAAON,EAAuBK,kBAAkBR,CAAK,EACrDT,QAAS,CACPb,MAAOa,EAAQb,MACfC,IAAKY,EAAQZ,IACbI,UAAWQ,EAAQR,UACnBE,UAAWM,EAAQN,WAErBwD,aAAcxC,EACf,CACH,OAASyC,EAAkB,CACzBN,WAASpC,MAAM,iCAAkC0C,CAAO,CAC1D,CAEF,IAAIC,EACJ,GAAIC,EAA2BC,gBAAgBnB,CAAc,EAC3D,GAAI,CACFiB,EAAoBC,EAA2BJ,iBAAiB,CAC9D/B,MAAON,EAAuBK,kBAAkBR,CAAK,EACrDT,QAAS,CACPb,MAAOa,EAAQb,MACfC,IAAKY,EAAQZ,IACbI,UAAWQ,EAAQR,UACnBE,UAAWM,EAAQN,WAErBwD,aAAcxC,EACf,CACH,OAASyC,EAAkB,CACzBN,WAASpC,MAAM,iCAAkC0C,CAAO,CAC1D,CAIF,IAAMI,EACJ7C,GAAU,MAAQA,EAAOH,KAAI,EAAGL,OAAS,EAAIQ,EAAOH,KAAI,EAAKV,OACzD2D,EAA0C,CAC9CC,GAAI,KAAKhF,qBACTgC,MAAOA,EACP0B,eAAgBA,EAChBzC,UAAWC,KAAK+D,IAAG,EACnBC,aAAc,GACdT,aAAcK,EACdT,kBAAmBA,EACnBM,kBAAmBA,GAoBrB,GAlBA,KAAK9E,SAASsF,OAAQC,GAAgF,CACpG,IAAMC,EAA8C,CAAC,GAAGD,EAAML,CAAK,EACnE,OAAIM,EAAQ5D,OAASpC,EAAgCY,iBAC5CoF,EAAQC,MAAMD,EAAQ5D,OAASpC,EAAgCY,gBAAgB,EAEjFoF,CACT,CAAC,EAGD5B,WAAW,IAAW,CACpB,KAAK8B,oBAAoBR,EAAMC,EAAE,CACnC,EAAG3F,EAAgCa,aAAa,EAG5C8B,aAAiBmC,OACnBC,WAASpC,MAAM,SAAUC,GAAU,aAAcD,CAAK,EAGpD,EAAEA,aAAiBe,GAAoB,CACzC,IAAMyC,EACJ,KAAKzD,4BAA4BC,EAAOC,GAAU,YAAY,EAC5DwD,EAA6B,GAC7BpB,GAAqB,KACvBoB,EAAqBnB,EAA2BoB,0BAA0BrB,CAAiB,EAClFM,GAAqB,OAC9Bc,EAAqBb,EAA2Bc,0BAA0Bf,CAAiB,GAE7F,IAAMgB,EACJF,EAAmBhE,OAAS,EACxB,GAAG+D,EAAY/C,OAAS,EAAE,GAAGgD,CAAkB,GAC9CD,EAAY/C,OAAS,GACtBmD,EAA8B,CAClCvD,QAASmD,EAAYnD,QACrBI,MAAOkD,EACP1D,OAAQuD,EAAYvD,OACpB4D,UAAWL,EAAYK,UACvBC,MAAON,EAAYM,MACnBpD,UAAW8C,EAAY9C,UACvBE,uBAAwB4C,EAAY5C,uBACpCE,cAAe0C,EAAY1C,eAE7B,KAAKxD,UAAUyG,YAAYH,CAAO,EAAEI,MAAM,IAAW,CAAE,CAAC,CAC1D,CACF,OAASC,EAAY,CACnB7B,WAASpC,MAAM,4BAA6BiE,CAAC,CAC/C,CACF,EAAG,CAAC,CACN,CAMAC,YAAYlB,EAAU,CACpB,IAAMD,EACJ,KAAKlF,SAAQ,EAAGsG,KAAMF,GAAiDA,EAAEjB,KAAOA,CAAE,EAChFD,GAAS,MACX,KAAKhF,+BAA+BqG,IAAIrB,CAAK,CAEjD,CAOAQ,oBAAoBP,EAAU,CAE5B,IAAMD,EAD8C,KAAKlF,SAAQ,EAEvDsG,KAAMF,GAAiDA,EAAEjB,KAAOA,CAAE,EACxED,GAAS,MAAQA,EAAMG,eAI3B,KAAKrF,SAASsF,OACXC,GACCA,EAAKiB,IAAKJ,GACRA,EAAEjB,KAAOA,EAAKsB,EAAAC,EAAA,GAAKN,GAAL,CAAQf,aAAc,EAAI,GAAKe,CAAC,CAC/C,EAGLxC,WAAW,IAAW,CACpB,KAAK5D,SAASsF,OACXC,GACCA,EAAKoB,OAAQP,GAAiDA,EAAEjB,KAAOA,CAAE,CAAC,CAEhF,EAAG3F,EAAgCe,eAAe,EACpD,CAGAqG,iBAAe,CACb,KAAK1G,+BAA+BqG,IAAI,IAAI,CAC9C,CAGAM,YAAU,CACR,KAAK7G,SAASuG,IAAI,CAAA,CAAE,EACpB,KAAKrG,+BAA+BqG,IAAI,IAAI,CAC9C,CAQMO,gBAAgBC,EAAY,QAAAC,EAAA,sBAEhC,OADiC,MAAM,KAAKC,mCAAmCF,CAAI,GAE1E,CAAEG,GAAI,EAAI,EAEf,KAAKC,wBAAwBJ,CAAI,EAC5B,CAAEG,GAAI,EAAI,EAEZ,CACLA,GAAI,GACJ/E,MAAO,IAAImC,MACT,wGAAwG,EAG9G,GAKc2C,mCAAmCF,EAAY,QAAAC,EAAA,sBAC3D,IAAMI,EAAmC,OAAOjG,UAAc,IAAcA,UAAUiG,UAAY7F,OAClG,GAAI6F,GAAa,MAAQ,OAAOA,EAAUC,WAAc,WACtD,MAAO,GAET,GAAI,CACF,aAAMD,EAAUC,UAAUN,CAAI,EACvB,EACT,MAAQ,CACN,MAAO,EACT,CACF,GAMQI,wBAAwBJ,EAAY,CAC1C,GAAI,OAAOO,SAAa,KAAe,OAAOA,SAASC,aAAgB,WACrE,MAAO,GAET,IAAMC,EAAgCF,SAASG,cAAc,UAAU,EACvED,EAASE,MAAQX,EACjBS,EAASG,aAAa,WAAY,EAAE,EACpCH,EAASG,aAAa,cAAe,MAAM,EAE3CH,EAASI,MAAMC,SAAW,QAC1BL,EAASI,MAAME,IAAM,IACrBN,EAASI,MAAMG,KAAO,IACtBP,EAASI,MAAMI,MAAQ,MACvBR,EAASI,MAAMK,OAAS,MACxBT,EAASI,MAAMM,QAAU,IACzBV,EAASI,MAAMO,OAAS,IACxBX,EAASI,MAAMQ,OAAS,OACxBZ,EAASI,MAAMS,QAAU,OACzBb,EAASI,MAAMU,QAAU,IACzBd,EAASI,MAAMW,cAAgB,OAC/BjB,SAAStF,KAAKwG,YAAYhB,CAAQ,EAClCA,EAASiB,MAAK,EACdjB,EAASkB,OAAM,EACf,IAAMC,EAAc5B,EAAKnF,OACzB4F,EAASoB,kBAAkB,EAAGD,CAAG,EACjC,IAAIE,EAAkB,GACtB,GAAI,CACFA,EAASvB,SAASC,YAAY,MAAM,CACtC,MAAQ,CACNsB,EAAS,EACX,CACArB,OAAAA,EAASsB,OAAM,EACRD,CACT,CAQAE,gBAAgBrF,EAA2D,CAGzE,GAAI,EADF,KAAK5D,mBAAmBmE,UAAS,EAAGC,KAAKC,0CAA4C,MAEjFT,EAAOtB,SAAW,iBAGlBgC,EAA2CC,sBAAsBX,EAAOlB,OAAO,GACjF,OAGJ,IAAMuD,EACJ,KAAKtC,6BAA6BC,CAAM,EAC1C,KAAKjE,UAAUyG,YAAYH,CAAO,EAAEI,MAAM,IAAW,CAAE,CAAC,CAC1D,4CA/cW3G,EAA+B,6BAA/BA,EAA+BwJ,QAA/BxJ,EAA+ByJ,UAAAC,WAH9B,MAAM,CAAA,SAGP1J,CAA+B,GAAA",
|
|
6
|
+
"names": ["CCAP_NG0600_ROUTE_FEATURE_HINTS", "prefix", "hint", "NG0203_MESSAGE", "CCAP_Ng0203Diagnostic_Util", "isNg0203Message", "message", "trim", "buildDiagnostics", "params", "clientSnapshot", "route", "context", "url", "userAgent", "timestamp", "stackFrames", "parseStackFrames", "stack", "routeFeatureHints", "resolveRouteFeatureHints", "staticGuidance", "buildStaticGuidance", "toolSteps", "buildToolSteps", "clientSource", "summary", "formatDiagnosticsAppendix", "diagnostics", "json", "JSON", "stringify", "lines", "split", "map", "l", "filter", "length", "frames", "line", "parsed", "tryParseStackLine", "push", "parenMatch", "match", "urlPart", "looksLikeUrlWithLineCol", "loc", "parseUrlLineCol", "rawLine", "column", "bundleHint", "bundleHintFromUrl", "atMatch", "token", "s", "test", "includes", "re", "m", "Number", "parseInt", "isFinite", "lower", "toLowerCase", "endsWith", "normalized", "startsWith", "sorted", "CCAP_NG0600_ROUTE_FEATURE_HINTS", "sort", "a", "b", "prefix", "entry", "hint", "dash", "find", "e", "steps", "id", "label", "detail", "frameSummary", "slice", "f", "parts", "String", "join", "NG0600_MESSAGE", "CCAP_Ng0600Diagnostic_Util", "isNg0600Message", "message", "trim", "buildDiagnostics", "params", "clientSnapshot", "route", "context", "url", "userAgent", "timestamp", "stackFrames", "parseStackFrames", "stack", "routeFeatureHints", "resolveRouteFeatureHints", "staticGuidance", "buildStaticGuidance", "toolSteps", "buildToolSteps", "clientSource", "summary", "formatDiagnosticsAppendix", "diagnostics", "json", "JSON", "stringify", "lines", "split", "map", "l", "filter", "length", "frames", "line", "parsed", "tryParseStackLine", "push", "parenMatch", "match", "urlPart", "looksLikeUrlWithLineCol", "loc", "parseUrlLineCol", "rawLine", "column", "bundleHint", "bundleHintFromUrl", "atMatch", "token", "s", "test", "includes", "re", "m", "Number", "parseInt", "isFinite", "lower", "toLowerCase", "endsWith", "normalized", "startsWith", "sorted", "CCAP_NG0600_ROUTE_FEATURE_HINTS", "sort", "a", "b", "prefix", "entry", "hint", "dash", "find", "e", "steps", "id", "label", "detail", "frameSummary", "slice", "f", "parts", "String", "join", "ObjectTypeGuards_Util", "isRecord", "x", "Array", "isArray", "CCAP_CURSOR_CLI_DOCS_INSTALLATION_HREF", "CCAP_CURSOR_CLI_DOCS_USING_HREF", "CCAP_CURSOR_CLI_INSTALL_PAGE_HREF", "tryReadDyfmErrorCodeFromBody", "body", "ObjectTypeGuards_Util", "isRecord", "raw", "_errorCode", "trim", "length", "CCAP_HttpErrorTroubleshootingHint_Util", "tryGetHintForUnknownError", "params", "error", "HttpErrorResponse", "code", "hintForCaAgentErrorCode", "errorCode", "tryGetShortNotificationAffix", "commonLinks", "cursorCliDocLinks", "heading", "bodyLines", "links", "label", "href", "CCAP_CURSOR_CLI_DOCS_INSTALLATION_HREF", "CCAP_CURSOR_CLI_DOCS_USING_HREF", "CCAP_CURSOR_CLI_INSTALL_PAGE_HREF", "import_fsm_dynamo", "FALLBACK_ERROR_MESSAGE", "FULL_MESSAGE_MAX_DEPTH", "getBodyMessageFromErrorResponse", "body", "ObjectTypeGuards_Util", "isRecord", "_message", "trim", "error", "message", "nested", "getSingleErrorMessage", "HttpErrorResponse", "bodyMessage", "CCAP_HttpErrorMessage_Util", "getHttpErrorMessage", "getMsg", "DyFM_Error", "getErrorMessage", "msg", "Error", "String", "detail", "json", "JSON", "stringify", "getDirectDyFmChildErrorClient", "isDyFMError", "dynamoErr", "arr", "errors", "Array", "isArray", "length", "last", "getNestedError", "fromDyFm", "fromError", "Blob", "c", "cause", "tryGetLocalStackBlock", "ls", "__localStack", "getSingleStackString", "stack", "collectStackSectionsForReport", "depth", "chunks", "localBlock", "push", "stackStr", "CCAP_ErrorDisplay_Util", "getFullErrorMessageForDisplay", "maxDepth", "base", "trimmed", "causedByPrefix", "startsWith", "toDisplaySafeString", "value", "t", "getErrorMessageForDisplay", "getStackForReport", "joined", "join", "import_fsm_dynamo", "CCAP_SocketTransportErrorNoiseMessage_Util", "matchesDisplayMessage", "message", "m", "trim", "toLowerCase", "length", "includes", "CCAP_ERRORS_PM_USER_MARKED_AT_KEY", "DEFAULT_PAGE_SIZE", "Errors_ApiService", "baseUrl", "environment", "api", "http", "inject", "HttpClient", "listErrors", "params", "pageSize", "limit", "pageIndex", "skip", "Math", "floor", "url", "firstValueFrom", "get", "pipe", "map", "paged", "errors", "items", "rec", "mapRecordToListItem", "total", "listFixAnnotations", "resp", "annotations", "getErrorStatistics", "rangeKey", "encodeURIComponent", "deleteError", "id", "deleteAllErrors", "setPmUserMark", "marked", "trimmed", "trim", "post", "reportError", "payload", "messageWithCode", "errorCode", "message", "surroundingState", "__spreadValues", "clientContext", "errorAdditionalContent", "additionalContent", "sessionId", "runId", "body", "source", "stackTrace", "stack", "split", "recorded", "additional", "ObjectTypeGuards_Util", "isRecord", "surroundingRaw", "undefined", "sessionFromAdditional", "optionalNonEmptyString", "runFromAdditional", "pmMarked", "CCAP_ERRORS_PM_USER_MARKED_AT_KEY", "_id", "resolveMessageFromRecord", "resolveStackTextFromRecord", "resolveSourceFromRecord", "occurrenceCount", "count", "lastOccurrenceAt", "__lastModified", "timestamp", "__created", "ccapId", "pmUserMarkedAt", "versions", "extractVersions", "_errorCode", "raw", "Array", "isArray", "out", "item", "length", "push", "pushed", "$push", "fromRoot", "fromUnderscore", "_message", "readMessageFromErrorLikeUnknown", "error", "d_error", "fromSource", "___issuerService", "traceUnknown", "fromLines", "join", "fromNestedError", "readStackFromErrorLikeUnknown", "value", "msg", "under", "st", "factory", "\u0275fac", "providedIn", "CCAP_GlobalError_ControlService", "errors_AS", "inject", "Errors_ApiService", "router", "Router", "settingsGeneral_DS", "Set_General_DataService", "errors_$", "signal", "selectedNotificationForModal_$", "nextNotificationId", "maxNotifications", "autoDismissMs", "second", "exitAnimationMs", "isErrorHandlingInProgress_", "isErrorHandlingInProgress", "beginErrorHandling", "endErrorHandling", "getCurrentContext", "route", "url", "window", "location", "href", "userAgent", "navigator", "timestamp", "Date", "toISOString", "undefined", "buildStackWithContext", "errorStack", "context", "lines", "length", "push", "header", "join", "body", "trim", "buildReportPayloadFromError", "error", "source", "baseMessage", "CCAP_ErrorDisplay_Util", "getErrorMessageForDisplay", "message", "enrichMessageForReport", "rawStack", "getStackForReport", "stack", "errorCode", "extractErrorCode", "errorAdditionalContent", "extractAdditionalContent", "clientContext", "HttpErrorResponse", "urlPart", "statusPart", "status", "rec", "_errorCode", "additionalContent", "buildReportPayloadFromParams", "params", "showError", "setTimeout", "displayMessage", "troubleshootingAffix", "CCAP_HttpErrorTroubleshootingHint_Util", "tryGetShortNotificationAffix", "section_$", "form", "reportSocketConnectionErrorsToErrorList", "CCAP_SocketTransportErrorNoiseMessage_Util", "matchesDisplayMessage", "Error", "DyFM_Log", "ng0600Diagnostics", "CCAP_Ng0600Diagnostic_Util", "isNg0600Message", "buildDiagnostics", "clientSource", "diagErr", "ng0203Diagnostics", "CCAP_Ng0203Diagnostic_Util", "isNg0203Message", "trimmedSource", "entry", "id", "now", "isDismissing", "update", "list", "updated", "slice", "dismissNotification", "basePayload", "diagnosticAppendix", "formatDiagnosticsAppendix", "stackWithDiagnostics", "payload", "sessionId", "runId", "reportError", "catch", "e", "selectError", "find", "set", "map", "__spreadProps", "__spreadValues", "filter", "dismissSelected", "dismissAll", "copyToClipboard", "text", "__async", "tryWriteTextWithNavigatorClipboard", "ok", "copyTextWithExecCommand", "clipboard", "writeText", "document", "execCommand", "textarea", "createElement", "value", "setAttribute", "style", "position", "top", "left", "width", "height", "padding", "margin", "border", "outline", "opacity", "pointerEvents", "appendChild", "focus", "select", "end", "setSelectionRange", "copied", "remove", "reportErrorOnly", "factory", "\u0275fac", "providedIn"]
|
|
7
7
|
}
|