@futdevpro/ccap 1.1.3223 → 1.1.3371
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/cli/build/_collections/update/update-verify-install.interface.d.ts +23 -0
- package/cli/build/_collections/update/update-verify-install.interface.d.ts.map +1 -0
- package/cli/build/_collections/update/update-verify-install.interface.js +3 -0
- package/cli/build/_collections/update/update-verify-install.interface.js.map +1 -0
- package/cli/build/_collections/update/update-verify-install.util.d.ts +50 -0
- package/cli/build/_collections/update/update-verify-install.util.d.ts.map +1 -0
- package/cli/build/_collections/update/update-verify-install.util.js +179 -0
- package/cli/build/_collections/update/update-verify-install.util.js.map +1 -0
- package/cli/build/_collections/update/update-verify-install.util.spec.d.ts +6 -0
- package/cli/build/_collections/update/update-verify-install.util.spec.d.ts.map +1 -0
- package/cli/build/_collections/update/update-verify-install.util.spec.js +117 -0
- package/cli/build/_collections/update/update-verify-install.util.spec.js.map +1 -0
- package/cli/build/_commands/cc-inspect-options.interface.d.ts +11 -0
- package/cli/build/_commands/cc-inspect-options.interface.d.ts.map +1 -0
- package/cli/build/_commands/cc-inspect-options.interface.js +3 -0
- package/cli/build/_commands/cc-inspect-options.interface.js.map +1 -0
- package/cli/build/_commands/cc-inspect.d.ts +33 -0
- package/cli/build/_commands/cc-inspect.d.ts.map +1 -0
- package/cli/build/_commands/cc-inspect.js +228 -0
- package/cli/build/_commands/cc-inspect.js.map +1 -0
- package/cli/build/_commands/input.d.ts +55 -0
- package/cli/build/_commands/input.d.ts.map +1 -0
- package/cli/build/_commands/input.interface.d.ts +21 -0
- package/cli/build/_commands/input.interface.d.ts.map +1 -0
- package/cli/build/_commands/input.interface.js +3 -0
- package/cli/build/_commands/input.interface.js.map +1 -0
- package/cli/build/_commands/input.js +183 -0
- package/cli/build/_commands/input.js.map +1 -0
- package/cli/build/_commands/input.spec.d.ts +8 -0
- package/cli/build/_commands/input.spec.d.ts.map +1 -0
- package/cli/build/_commands/input.spec.js +63 -0
- package/cli/build/_commands/input.spec.js.map +1 -0
- package/cli/build/_commands/skill-doc.d.ts +63 -0
- package/cli/build/_commands/skill-doc.d.ts.map +1 -0
- package/cli/build/_commands/skill-doc.interface.d.ts +19 -0
- package/cli/build/_commands/skill-doc.interface.d.ts.map +1 -0
- package/cli/build/_commands/skill-doc.interface.js +3 -0
- package/cli/build/_commands/skill-doc.interface.js.map +1 -0
- package/cli/build/_commands/skill-doc.js +421 -0
- package/cli/build/_commands/skill-doc.js.map +1 -0
- package/cli/build/_commands/skill-doc.spec.d.ts +10 -0
- package/cli/build/_commands/skill-doc.spec.d.ts.map +1 -0
- package/cli/build/_commands/skill-doc.spec.js +112 -0
- package/cli/build/_commands/skill-doc.spec.js.map +1 -0
- package/cli/build/_commands/update.d.ts.map +1 -1
- package/cli/build/_commands/update.js +59 -0
- package/cli/build/_commands/update.js.map +1 -1
- package/cli/build/_commands/update.spec.js +12 -0
- package/cli/build/_commands/update.spec.js.map +1 -1
- package/cli/build/program.js +51 -0
- package/cli/build/program.js.map +1 -1
- package/client-dist/{agent-instances.module-V7DKSWVC.js → agent-instances.module-TPKOBI3N.js} +2 -2
- package/client-dist/ca.module-I5N6QWSU.js +5 -0
- package/client-dist/{ca.module-MVE3OLDD.js.map → ca.module-I5N6QWSU.js.map} +3 -3
- package/client-dist/cc-usage-dashboard.component-7SPVADUQ.js +2 -0
- package/client-dist/cc-usage-dashboard.component-7SPVADUQ.js.map +7 -0
- package/client-dist/cc.module-7IL3QO5Q.js +4 -0
- package/client-dist/cc.module-7IL3QO5Q.js.map +7 -0
- package/client-dist/{chunk-JZHYGU3K.js → chunk-25KTNALK.js} +2 -2
- package/client-dist/{chunk-6GSTJE3R.js → chunk-26YUXPZI.js} +2 -2
- package/client-dist/{chunk-4GPIIB3D.js → chunk-3AG5X2MY.js} +2 -2
- package/client-dist/{chunk-4GPIIB3D.js.map → chunk-3AG5X2MY.js.map} +3 -3
- package/client-dist/chunk-3G2ZGV66.js +2 -0
- package/client-dist/chunk-3G2ZGV66.js.map +7 -0
- package/client-dist/{chunk-4SFV57IQ.js → chunk-44TWBJUK.js} +2 -2
- package/client-dist/{chunk-DURLBTAJ.js → chunk-4EOSKDXN.js} +2 -2
- package/client-dist/{chunk-3TMVRWAB.js → chunk-4FK2D2PX.js} +2 -2
- package/client-dist/chunk-4JL2Q6FO.js +2 -0
- package/client-dist/chunk-4JL2Q6FO.js.map +7 -0
- package/client-dist/{chunk-MY75XBDH.js → chunk-4PBNHSRW.js} +2 -2
- package/client-dist/{chunk-3D32XY5M.js → chunk-5RLDT3NY.js} +2 -2
- package/client-dist/{chunk-VGTXKD6D.js → chunk-5YDHEFSD.js} +2 -2
- package/client-dist/{chunk-XTUQJ3W6.js → chunk-657E66YR.js} +2 -2
- package/client-dist/{chunk-CFHQS3UB.js → chunk-6BYNIFJY.js} +2 -2
- package/client-dist/{chunk-7HSUCNW5.js → chunk-77YTUUCR.js} +7 -3
- package/client-dist/{chunk-7HSUCNW5.js.map → chunk-77YTUUCR.js.map} +2 -2
- package/client-dist/{chunk-5C3KCWYF.js → chunk-7CMPZXAO.js} +2 -2
- package/client-dist/{chunk-TP2634XD.js → chunk-7VY64KMU.js} +2 -2
- package/client-dist/{chunk-7SAFEFWU.js → chunk-A33MCHYC.js} +2 -2
- package/client-dist/{chunk-KYVIZZWW.js → chunk-BH3GMEZZ.js} +19 -19
- package/client-dist/chunk-BH3GMEZZ.js.map +7 -0
- package/client-dist/{chunk-HLNT234H.js → chunk-BJ4I73WC.js} +2 -2
- package/client-dist/{chunk-AI7WKHRQ.js → chunk-C2BQQRVH.js} +2 -2
- package/client-dist/{chunk-IINV7GMO.js → chunk-C4FOSX27.js} +2 -2
- package/client-dist/chunk-C4FOSX27.js.map +7 -0
- package/client-dist/{chunk-JMZKJLUE.js → chunk-CAMM4S7P.js} +2 -2
- package/client-dist/{chunk-GZDOO5NB.js → chunk-CDNAFC73.js} +2 -2
- package/client-dist/{chunk-GADEZIXI.js → chunk-CU5YQ2M4.js} +2 -2
- package/client-dist/{chunk-2OAF6FCL.js → chunk-DXF2FJLD.js} +2 -2
- package/client-dist/{chunk-TOFOK5W7.js → chunk-E6WOJOGT.js} +2 -2
- package/client-dist/{chunk-OEEQNIJG.js → chunk-EDMLVG72.js} +2 -2
- package/client-dist/chunk-G5SK3OBM.js +2 -0
- package/client-dist/chunk-G5SK3OBM.js.map +7 -0
- package/client-dist/{chunk-D2UUXA6L.js → chunk-GG2WP2KM.js} +2 -2
- package/client-dist/{chunk-R5WCLLO5.js → chunk-IHNAAEA2.js} +2 -2
- package/client-dist/{chunk-SQWHJTFE.js → chunk-J5INQQ5M.js} +2 -2
- package/client-dist/{chunk-OUBNMT7L.js → chunk-KX2KGHQZ.js} +2 -2
- package/client-dist/{chunk-2EMFCVYO.js → chunk-L2XJGYW4.js} +2 -2
- package/client-dist/{chunk-LIQPVSH3.js → chunk-L42Z7YNK.js} +2 -2
- package/client-dist/{chunk-PTCJL62W.js → chunk-LCKABD2M.js} +2 -2
- package/client-dist/{chunk-OQW6FXRJ.js → chunk-LIGODF4I.js} +2 -2
- package/client-dist/{chunk-MS5OG7JD.js → chunk-LMK3IOKN.js} +2 -2
- package/client-dist/{chunk-BC7H7K5F.js → chunk-OCNDLQG5.js} +2 -2
- package/client-dist/{chunk-4JKJRGJX.js → chunk-OKUYYDGV.js} +2 -2
- package/client-dist/{chunk-U2EBQMSE.js → chunk-OLLHHMTV.js} +2 -2
- package/client-dist/{chunk-ILG5WENK.js → chunk-OS5KCUZD.js} +2 -2
- package/client-dist/{chunk-3PLWSRB4.js → chunk-PMJP2N4K.js} +2 -2
- package/client-dist/{chunk-JEHOIN7Y.js → chunk-PW5BAINL.js} +2 -2
- package/client-dist/{chunk-DJVWZQNB.js → chunk-QQ2GRU2N.js} +2 -2
- package/client-dist/{chunk-SLSTIBOT.js → chunk-RUSAMFGS.js} +2 -2
- package/client-dist/{chunk-SLSTIBOT.js.map → chunk-RUSAMFGS.js.map} +1 -1
- package/client-dist/{chunk-CRYF37M7.js → chunk-RYD462IO.js} +2 -2
- package/client-dist/{chunk-7X22BWF7.js → chunk-SK3XGSYF.js} +2 -2
- package/client-dist/{chunk-PG7CJVEP.js → chunk-TFB7ULAV.js} +2 -2
- package/client-dist/{chunk-SYCUR4MY.js → chunk-U3Y5GO6O.js} +2 -2
- package/client-dist/{chunk-OLK5MJ4J.js → chunk-U64N3LCA.js} +2 -2
- package/client-dist/{chunk-AX7QIINI.js → chunk-UD4PV7CD.js} +2 -2
- package/client-dist/{chunk-3PA6BJES.js → chunk-UM7AS2IW.js} +2 -2
- package/client-dist/{chunk-CLQC45GB.js → chunk-UVVGFHUG.js} +2 -2
- package/client-dist/{chunk-RSPVPEQ4.js → chunk-VOFDBT5T.js} +2 -2
- package/client-dist/{chunk-C4JDDOQR.js → chunk-VRG74DKK.js} +2 -2
- package/client-dist/{chunk-VO5ZLOZM.js → chunk-W7HIS2QA.js} +2 -2
- package/client-dist/{chunk-PFBJ7ZHP.js → chunk-XFXMWTQS.js} +2 -2
- package/client-dist/chunk-XWYXBY7S.js +2 -0
- package/client-dist/chunk-XWYXBY7S.js.map +7 -0
- package/client-dist/consultant.module-HHTHUWRL.js +3 -0
- package/client-dist/{consultant.module-WUUVSVHL.js.map → consultant.module-HHTHUWRL.js.map} +3 -3
- package/client-dist/{crd.module-IRGVOYD5.js → crd.module-ER6AHSX5.js} +2 -2
- package/client-dist/{dashboard.module-NPPSZHO6.js → dashboard.module-TSNGGBCI.js} +2 -2
- package/client-dist/{do.module-GKQTJOXR.js → do.module-NMZD5VSM.js} +2 -2
- package/client-dist/{document-library.module-JK3K7QNJ.js → document-library.module-GHDNXP3T.js} +2 -2
- package/client-dist/{embedding-eval.module-LVESAMPN.js → embedding-eval.module-XPXBOIP5.js} +2 -2
- package/client-dist/{embedding-registry.module-3ECACZZ3.js → embedding-registry.module-45TQGZI2.js} +2 -2
- package/client-dist/{err.module-B666YXQT.js → err.module-GCKYDYCK.js} +2 -2
- package/client-dist/{feedback.module-AHG7462C.js → feedback.module-TLKZ4B4N.js} +2 -2
- package/client-dist/{host-runtime-mcp.module-XFUI7B65.js → host-runtime-mcp.module-HVJZN5R5.js} +2 -2
- package/client-dist/index.html +2 -2
- package/client-dist/{live-dev-pipeline.module-OMK67DGM.js → live-dev-pipeline.module-5PE4ZFFW.js} +2 -2
- package/client-dist/{logs.module-FWACECVV.js → logs.module-335EXKCD.js} +2 -2
- package/client-dist/{main-H4AYPQ2E.js → main-FRD6VXVH.js} +4 -4
- package/client-dist/{main-H4AYPQ2E.js.map → main-FRD6VXVH.js.map} +3 -3
- package/client-dist/{master-control-remote-poc.module-GQ6RMPRB.js → master-control-remote-poc.module-ORHRUCZH.js} +2 -2
- package/client-dist/{mobile-app.module-YSARX6QC.js → mobile-app.module-BYYNVKQR.js} +2 -2
- package/client-dist/{model-registry.module-SJOUSDXZ.js → model-registry.module-KIHIJ2Z6.js} +2 -2
- package/client-dist/oc.module-DAGIRW3Z.js +3 -0
- package/client-dist/{oc.module-CDGBJ6I4.js.map → oc.module-DAGIRW3Z.js.map} +3 -3
- package/client-dist/{orc.module-5S7GBE4E.js → orc.module-KZELL6XR.js} +2 -2
- package/client-dist/{project-management.module-LWZLB6VU.js → project-management.module-IJNPSUQZ.js} +2 -2
- package/client-dist/project-source-routed.module-DP3RD454.js +2 -0
- package/client-dist/{scheduler.module-VH647PWD.js → scheduler.module-S3IKZCLL.js} +2 -2
- package/client-dist/session.module-FZC22UUN.js +12 -0
- package/client-dist/session.module-FZC22UUN.js.map +7 -0
- package/client-dist/{set.module-XHJR4XUD.js → set.module-Y2RHKW7A.js} +5 -5
- package/client-dist/{set.module-XHJR4XUD.js.map → set.module-Y2RHKW7A.js.map} +3 -3
- package/client-dist/{setup.module-RRQZ62B2.js → setup.module-VTI5EZ3Q.js} +2 -2
- package/client-dist/styles-MX7ZZMTH.css +2 -0
- package/client-dist/styles-MX7ZZMTH.css.map +7 -0
- package/client-dist/{terminals.module-QKIQS6FH.js → terminals.module-KHEDY6QN.js} +2 -2
- package/client-dist/{voice-notes-poc.module-K3FB6OIB.js → voice-notes-poc.module-EMDLJJIT.js} +2 -2
- package/client-dist/{wfs.module-JVR53PGJ.js → wfs.module-LUTFNQG5.js} +2 -2
- package/package.json +1 -1
- package/server/build/src/_collections/core/ccap-post-services-bootstrap.util.d.ts.map +1 -1
- package/server/build/src/_collections/core/ccap-post-services-bootstrap.util.js +5 -0
- package/server/build/src/_collections/core/ccap-post-services-bootstrap.util.js.map +1 -1
- package/server/build/src/_modules/ccap-agent/_modules/error-handling/_collections/error-handling-stats-range.const.d.ts +11 -0
- package/server/build/src/_modules/ccap-agent/_modules/error-handling/_collections/error-handling-stats-range.const.d.ts.map +1 -0
- package/server/build/src/_modules/ccap-agent/_modules/error-handling/_collections/error-handling-stats-range.const.js +20 -0
- package/server/build/src/_modules/ccap-agent/_modules/error-handling/_collections/error-handling-stats-range.const.js.map +1 -0
- package/server/build/src/_modules/ccap-agent/_modules/error-handling/_collections/utils/error-handling-stats.util.d.ts +65 -0
- package/server/build/src/_modules/ccap-agent/_modules/error-handling/_collections/utils/error-handling-stats.util.d.ts.map +1 -0
- package/server/build/src/_modules/ccap-agent/_modules/error-handling/_collections/utils/error-handling-stats.util.js +222 -0
- package/server/build/src/_modules/ccap-agent/_modules/error-handling/_collections/utils/error-handling-stats.util.js.map +1 -0
- package/server/build/src/_modules/ccap-agent/_modules/error-handling/_collections/utils/error-handling-stats.util.spec.d.ts +7 -0
- package/server/build/src/_modules/ccap-agent/_modules/error-handling/_collections/utils/error-handling-stats.util.spec.d.ts.map +1 -0
- package/server/build/src/_modules/ccap-agent/_modules/error-handling/_collections/utils/error-handling-stats.util.spec.js +213 -0
- package/server/build/src/_modules/ccap-agent/_modules/error-handling/_collections/utils/error-handling-stats.util.spec.js.map +1 -0
- package/server/build/src/_modules/ccap-agent/_modules/error-handling/_models/interfaces/error-handling-stats.interface.d.ts +58 -0
- package/server/build/src/_modules/ccap-agent/_modules/error-handling/_models/interfaces/error-handling-stats.interface.d.ts.map +1 -0
- package/server/build/src/_modules/ccap-agent/_modules/error-handling/_models/interfaces/error-handling-stats.interface.js +3 -0
- package/server/build/src/_modules/ccap-agent/_modules/error-handling/_models/interfaces/error-handling-stats.interface.js.map +1 -0
- package/server/build/src/_modules/ccap-agent/_modules/error-handling/_routes/error-handling.controller.d.ts.map +1 -1
- package/server/build/src/_modules/ccap-agent/_modules/error-handling/_routes/error-handling.controller.js +14 -0
- package/server/build/src/_modules/ccap-agent/_modules/error-handling/_routes/error-handling.controller.js.map +1 -1
- package/server/build/src/_modules/ccap-agent/_modules/error-handling/_services/errorhandling-stats.control-service.d.ts +35 -0
- package/server/build/src/_modules/ccap-agent/_modules/error-handling/_services/errorhandling-stats.control-service.d.ts.map +1 -0
- package/server/build/src/_modules/ccap-agent/_modules/error-handling/_services/errorhandling-stats.control-service.js +80 -0
- package/server/build/src/_modules/ccap-agent/_modules/error-handling/_services/errorhandling-stats.control-service.js.map +1 -0
- package/server/build/src/_modules/ccap-agent/_modules/integrations/_modules/voice/_services/control-services/stt/voc-transcribe.control-service.d.ts +2 -0
- package/server/build/src/_modules/ccap-agent/_modules/integrations/_modules/voice/_services/control-services/stt/voc-transcribe.control-service.d.ts.map +1 -1
- package/server/build/src/_modules/ccap-agent/_modules/integrations/_modules/voice/_services/control-services/stt/voc-transcribe.control-service.js +16 -0
- package/server/build/src/_modules/ccap-agent/_modules/integrations/_modules/voice/_services/control-services/stt/voc-transcribe.control-service.js.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/consts/cc-kill-reasons.const.d.ts +58 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/consts/cc-kill-reasons.const.d.ts.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/consts/cc-kill-reasons.const.js +64 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/consts/cc-kill-reasons.const.js.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/cc-list-item-serialize.util.d.ts.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/cc-list-item-serialize.util.js +3 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/cc-list-item-serialize.util.js.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/lifecycle/cc-exit-diagnostics.util.d.ts +47 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/lifecycle/cc-exit-diagnostics.util.d.ts.map +1 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/lifecycle/cc-exit-diagnostics.util.js +71 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/lifecycle/cc-exit-diagnostics.util.js.map +1 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/lifecycle/cc-process-exit.util.d.ts +36 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/lifecycle/cc-process-exit.util.d.ts.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/lifecycle/cc-process-exit.util.js +93 -6
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/lifecycle/cc-process-exit.util.js.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/lifecycle/cc-process-exit.util.spec.js +85 -21
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/lifecycle/cc-process-exit.util.spec.js.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/lifecycle/cc-recovery.util.d.ts.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/lifecycle/cc-recovery.util.js +81 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/lifecycle/cc-recovery.util.js.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/terminal/cc-terminal-session-closed-guard.util.d.ts.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/terminal/cc-terminal-session-closed-guard.util.js +14 -2
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/terminal/cc-terminal-session-closed-guard.util.js.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_routes/claude-code.controller.d.ts.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_routes/claude-code.controller.js +19 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_routes/claude-code.controller.js.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/blocked-resume/cc-blocked-resume.control-service.d.ts +4 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/blocked-resume/cc-blocked-resume.control-service.d.ts.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/blocked-resume/cc-blocked-resume.control-service.js +6 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/blocked-resume/cc-blocked-resume.control-service.js.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-adapter.control-service.d.ts +13 -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 +13 -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 +23 -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-event.data-service.d.ts.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-event.data-service.js +10 -3
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-event.data-service.js.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-manager.control-service.d.ts +15 -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 +75 -75
- 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/cc-monitoring.control-service.d.ts +6 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-monitoring.control-service.d.ts.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-monitoring.control-service.js +32 -9
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-monitoring.control-service.js.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-monitoring.control-service.spec.js +20 -2
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-monitoring.control-service.spec.js.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-route.control-service.d.ts +25 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-route.control-service.d.ts.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-route.control-service.js +301 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-route.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 +7 -3
- 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 +23 -7
- 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/status/cc-status-transition.control-service.spec.js +10 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/status/cc-status-transition.control-service.spec.js.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/terminal/cc-adapter-terminal.control-service.d.ts +11 -18
- 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 +31 -48
- 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/external-sessions/_modules/claude-code/_services/core/terminal/cc-terminal-lifecycle.control-service.d.ts +8 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/terminal/cc-terminal-lifecycle.control-service.d.ts.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/terminal/cc-terminal-lifecycle.control-service.js +13 -2
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/terminal/cc-terminal-lifecycle.control-service.js.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/openclaw/_services/core/oc-event.data-service.d.ts.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/openclaw/_services/core/oc-event.data-service.js +8 -3
- package/server/build/src/_modules/external-sessions/_modules/openclaw/_services/core/oc-event.data-service.js.map +1 -1
- package/server/build/src/_modules/messaging/_services/control-services/providers/msg-client-socket-server.service.d.ts.map +1 -1
- package/server/build/src/_modules/messaging/_services/control-services/providers/msg-client-socket-server.service.js +12 -0
- package/server/build/src/_modules/messaging/_services/control-services/providers/msg-client-socket-server.service.js.map +1 -1
- package/server/build/src/_modules/peer-instance/_collections/utils/pei-error-recording.util.d.ts +42 -0
- package/server/build/src/_modules/peer-instance/_collections/utils/pei-error-recording.util.d.ts.map +1 -0
- package/server/build/src/_modules/peer-instance/_collections/utils/pei-error-recording.util.js +73 -0
- package/server/build/src/_modules/peer-instance/_collections/utils/pei-error-recording.util.js.map +1 -0
- package/server/build/src/_modules/peer-instance/_collections/utils/pei-error-recording.util.spec.d.ts +10 -0
- package/server/build/src/_modules/peer-instance/_collections/utils/pei-error-recording.util.spec.d.ts.map +1 -0
- package/server/build/src/_modules/peer-instance/_collections/utils/pei-error-recording.util.spec.js +89 -0
- package/server/build/src/_modules/peer-instance/_collections/utils/pei-error-recording.util.spec.js.map +1 -0
- package/server/build/src/_modules/peer-instance/_models/interfaces/pei-bootstrap-attempt.interface.d.ts +8 -1
- package/server/build/src/_modules/peer-instance/_models/interfaces/pei-bootstrap-attempt.interface.d.ts.map +1 -1
- package/server/build/src/_modules/peer-instance/_services/pei-bootstrap-watchdog.spec.d.ts +10 -0
- package/server/build/src/_modules/peer-instance/_services/pei-bootstrap-watchdog.spec.d.ts.map +1 -0
- package/server/build/src/_modules/peer-instance/_services/pei-bootstrap-watchdog.spec.js +74 -0
- package/server/build/src/_modules/peer-instance/_services/pei-bootstrap-watchdog.spec.js.map +1 -0
- package/server/build/src/_modules/peer-instance/_services/pei-bootstrap.control-service.d.ts +37 -0
- package/server/build/src/_modules/peer-instance/_services/pei-bootstrap.control-service.d.ts.map +1 -1
- package/server/build/src/_modules/peer-instance/_services/pei-bootstrap.control-service.js +117 -0
- package/server/build/src/_modules/peer-instance/_services/pei-bootstrap.control-service.js.map +1 -1
- package/server/build/src/_modules/peer-instance/_services/pei-dispatch.control-service.d.ts +11 -0
- package/server/build/src/_modules/peer-instance/_services/pei-dispatch.control-service.d.ts.map +1 -1
- package/server/build/src/_modules/peer-instance/_services/pei-dispatch.control-service.js +11 -1
- package/server/build/src/_modules/peer-instance/_services/pei-dispatch.control-service.js.map +1 -1
- package/server/build/src/_modules/peer-instance/_services/pei-dispatch.control-service.spec.js +65 -0
- package/server/build/src/_modules/peer-instance/_services/pei-dispatch.control-service.spec.js.map +1 -1
- package/server/build/src/_modules/peer-instance/_services/pei-heartbeat.control-service.d.ts.map +1 -1
- package/server/build/src/_modules/peer-instance/_services/pei-heartbeat.control-service.js +24 -0
- package/server/build/src/_modules/peer-instance/_services/pei-heartbeat.control-service.js.map +1 -1
- package/server/build/src/_modules/peer-instance/_services/pei-ws-client.control-service.d.ts +30 -0
- package/server/build/src/_modules/peer-instance/_services/pei-ws-client.control-service.d.ts.map +1 -1
- package/server/build/src/_modules/peer-instance/_services/pei-ws-client.control-service.js +91 -2
- package/server/build/src/_modules/peer-instance/_services/pei-ws-client.control-service.js.map +1 -1
- package/server/build/src/_modules/peer-instance/_services/pei-ws-server.control-service.d.ts.map +1 -1
- package/server/build/src/_modules/peer-instance/_services/pei-ws-server.control-service.js +10 -0
- package/server/build/src/_modules/peer-instance/_services/pei-ws-server.control-service.js.map +1 -1
- package/server/build/src/_modules/scheduler/_collections/utils/sch-jitter.util.spec.js +4 -2
- package/server/build/src/_modules/scheduler/_collections/utils/sch-jitter.util.spec.js.map +1 -1
- package/server/build/src/_modules/setup-config/_models/interfaces/cluster/sc-cluster-diagnostics-result.interface.d.ts +9 -0
- package/server/build/src/_modules/setup-config/_models/interfaces/cluster/sc-cluster-diagnostics-result.interface.d.ts.map +1 -1
- package/server/build/src/_modules/setup-config/_services/control-services/sc-cluster.control-service.d.ts.map +1 -1
- package/server/build/src/_modules/setup-config/_services/control-services/sc-cluster.control-service.js +1 -0
- package/server/build/src/_modules/setup-config/_services/control-services/sc-cluster.control-service.js.map +1 -1
- package/client-dist/ca.module-MVE3OLDD.js +0 -5
- package/client-dist/cc-usage-dashboard.component-F7S4MG67.js +0 -2
- package/client-dist/cc-usage-dashboard.component-F7S4MG67.js.map +0 -7
- package/client-dist/cc.module-GOXYWYW2.js +0 -4
- package/client-dist/cc.module-GOXYWYW2.js.map +0 -7
- package/client-dist/chunk-EGRHWZRV.js +0 -1
- package/client-dist/chunk-EGRHWZRV.js.map +0 -7
- package/client-dist/chunk-IINV7GMO.js.map +0 -7
- package/client-dist/chunk-KYVIZZWW.js.map +0 -7
- package/client-dist/chunk-MZLFEWAN.js +0 -2
- package/client-dist/chunk-MZLFEWAN.js.map +0 -7
- package/client-dist/chunk-QPEW5PI4.js +0 -2
- package/client-dist/chunk-QPEW5PI4.js.map +0 -7
- package/client-dist/consultant.module-WUUVSVHL.js +0 -3
- package/client-dist/oc.module-CDGBJ6I4.js +0 -3
- package/client-dist/project-source-routed.module-FDCQCUUB.js +0 -2
- package/client-dist/session.module-AKETH5O2.js +0 -12
- package/client-dist/session.module-AKETH5O2.js.map +0 -7
- package/client-dist/styles-KHQAHCL5.css +0 -2
- package/client-dist/styles-KHQAHCL5.css.map +0 -7
- /package/client-dist/{agent-instances.module-V7DKSWVC.js.map → agent-instances.module-TPKOBI3N.js.map} +0 -0
- /package/client-dist/{chunk-JZHYGU3K.js.map → chunk-25KTNALK.js.map} +0 -0
- /package/client-dist/{chunk-6GSTJE3R.js.map → chunk-26YUXPZI.js.map} +0 -0
- /package/client-dist/{chunk-4SFV57IQ.js.map → chunk-44TWBJUK.js.map} +0 -0
- /package/client-dist/{chunk-DURLBTAJ.js.map → chunk-4EOSKDXN.js.map} +0 -0
- /package/client-dist/{chunk-3TMVRWAB.js.map → chunk-4FK2D2PX.js.map} +0 -0
- /package/client-dist/{chunk-MY75XBDH.js.map → chunk-4PBNHSRW.js.map} +0 -0
- /package/client-dist/{chunk-3D32XY5M.js.map → chunk-5RLDT3NY.js.map} +0 -0
- /package/client-dist/{chunk-VGTXKD6D.js.map → chunk-5YDHEFSD.js.map} +0 -0
- /package/client-dist/{chunk-XTUQJ3W6.js.map → chunk-657E66YR.js.map} +0 -0
- /package/client-dist/{chunk-CFHQS3UB.js.map → chunk-6BYNIFJY.js.map} +0 -0
- /package/client-dist/{chunk-5C3KCWYF.js.map → chunk-7CMPZXAO.js.map} +0 -0
- /package/client-dist/{chunk-TP2634XD.js.map → chunk-7VY64KMU.js.map} +0 -0
- /package/client-dist/{chunk-7SAFEFWU.js.map → chunk-A33MCHYC.js.map} +0 -0
- /package/client-dist/{chunk-HLNT234H.js.map → chunk-BJ4I73WC.js.map} +0 -0
- /package/client-dist/{chunk-AI7WKHRQ.js.map → chunk-C2BQQRVH.js.map} +0 -0
- /package/client-dist/{chunk-JMZKJLUE.js.map → chunk-CAMM4S7P.js.map} +0 -0
- /package/client-dist/{chunk-GZDOO5NB.js.map → chunk-CDNAFC73.js.map} +0 -0
- /package/client-dist/{chunk-GADEZIXI.js.map → chunk-CU5YQ2M4.js.map} +0 -0
- /package/client-dist/{chunk-2OAF6FCL.js.map → chunk-DXF2FJLD.js.map} +0 -0
- /package/client-dist/{chunk-TOFOK5W7.js.map → chunk-E6WOJOGT.js.map} +0 -0
- /package/client-dist/{chunk-OEEQNIJG.js.map → chunk-EDMLVG72.js.map} +0 -0
- /package/client-dist/{chunk-D2UUXA6L.js.map → chunk-GG2WP2KM.js.map} +0 -0
- /package/client-dist/{chunk-R5WCLLO5.js.map → chunk-IHNAAEA2.js.map} +0 -0
- /package/client-dist/{chunk-SQWHJTFE.js.map → chunk-J5INQQ5M.js.map} +0 -0
- /package/client-dist/{chunk-OUBNMT7L.js.map → chunk-KX2KGHQZ.js.map} +0 -0
- /package/client-dist/{chunk-2EMFCVYO.js.map → chunk-L2XJGYW4.js.map} +0 -0
- /package/client-dist/{chunk-LIQPVSH3.js.map → chunk-L42Z7YNK.js.map} +0 -0
- /package/client-dist/{chunk-PTCJL62W.js.map → chunk-LCKABD2M.js.map} +0 -0
- /package/client-dist/{chunk-OQW6FXRJ.js.map → chunk-LIGODF4I.js.map} +0 -0
- /package/client-dist/{chunk-MS5OG7JD.js.map → chunk-LMK3IOKN.js.map} +0 -0
- /package/client-dist/{chunk-BC7H7K5F.js.map → chunk-OCNDLQG5.js.map} +0 -0
- /package/client-dist/{chunk-4JKJRGJX.js.map → chunk-OKUYYDGV.js.map} +0 -0
- /package/client-dist/{chunk-U2EBQMSE.js.map → chunk-OLLHHMTV.js.map} +0 -0
- /package/client-dist/{chunk-ILG5WENK.js.map → chunk-OS5KCUZD.js.map} +0 -0
- /package/client-dist/{chunk-3PLWSRB4.js.map → chunk-PMJP2N4K.js.map} +0 -0
- /package/client-dist/{chunk-JEHOIN7Y.js.map → chunk-PW5BAINL.js.map} +0 -0
- /package/client-dist/{chunk-DJVWZQNB.js.map → chunk-QQ2GRU2N.js.map} +0 -0
- /package/client-dist/{chunk-CRYF37M7.js.map → chunk-RYD462IO.js.map} +0 -0
- /package/client-dist/{chunk-7X22BWF7.js.map → chunk-SK3XGSYF.js.map} +0 -0
- /package/client-dist/{chunk-PG7CJVEP.js.map → chunk-TFB7ULAV.js.map} +0 -0
- /package/client-dist/{chunk-SYCUR4MY.js.map → chunk-U3Y5GO6O.js.map} +0 -0
- /package/client-dist/{chunk-OLK5MJ4J.js.map → chunk-U64N3LCA.js.map} +0 -0
- /package/client-dist/{chunk-AX7QIINI.js.map → chunk-UD4PV7CD.js.map} +0 -0
- /package/client-dist/{chunk-3PA6BJES.js.map → chunk-UM7AS2IW.js.map} +0 -0
- /package/client-dist/{chunk-CLQC45GB.js.map → chunk-UVVGFHUG.js.map} +0 -0
- /package/client-dist/{chunk-RSPVPEQ4.js.map → chunk-VOFDBT5T.js.map} +0 -0
- /package/client-dist/{chunk-C4JDDOQR.js.map → chunk-VRG74DKK.js.map} +0 -0
- /package/client-dist/{chunk-VO5ZLOZM.js.map → chunk-W7HIS2QA.js.map} +0 -0
- /package/client-dist/{chunk-PFBJ7ZHP.js.map → chunk-XFXMWTQS.js.map} +0 -0
- /package/client-dist/{crd.module-IRGVOYD5.js.map → crd.module-ER6AHSX5.js.map} +0 -0
- /package/client-dist/{dashboard.module-NPPSZHO6.js.map → dashboard.module-TSNGGBCI.js.map} +0 -0
- /package/client-dist/{do.module-GKQTJOXR.js.map → do.module-NMZD5VSM.js.map} +0 -0
- /package/client-dist/{document-library.module-JK3K7QNJ.js.map → document-library.module-GHDNXP3T.js.map} +0 -0
- /package/client-dist/{embedding-eval.module-LVESAMPN.js.map → embedding-eval.module-XPXBOIP5.js.map} +0 -0
- /package/client-dist/{embedding-registry.module-3ECACZZ3.js.map → embedding-registry.module-45TQGZI2.js.map} +0 -0
- /package/client-dist/{err.module-B666YXQT.js.map → err.module-GCKYDYCK.js.map} +0 -0
- /package/client-dist/{feedback.module-AHG7462C.js.map → feedback.module-TLKZ4B4N.js.map} +0 -0
- /package/client-dist/{host-runtime-mcp.module-XFUI7B65.js.map → host-runtime-mcp.module-HVJZN5R5.js.map} +0 -0
- /package/client-dist/{live-dev-pipeline.module-OMK67DGM.js.map → live-dev-pipeline.module-5PE4ZFFW.js.map} +0 -0
- /package/client-dist/{logs.module-FWACECVV.js.map → logs.module-335EXKCD.js.map} +0 -0
- /package/client-dist/{master-control-remote-poc.module-GQ6RMPRB.js.map → master-control-remote-poc.module-ORHRUCZH.js.map} +0 -0
- /package/client-dist/{mobile-app.module-YSARX6QC.js.map → mobile-app.module-BYYNVKQR.js.map} +0 -0
- /package/client-dist/{model-registry.module-SJOUSDXZ.js.map → model-registry.module-KIHIJ2Z6.js.map} +0 -0
- /package/client-dist/{orc.module-5S7GBE4E.js.map → orc.module-KZELL6XR.js.map} +0 -0
- /package/client-dist/{project-management.module-LWZLB6VU.js.map → project-management.module-IJNPSUQZ.js.map} +0 -0
- /package/client-dist/{project-source-routed.module-FDCQCUUB.js.map → project-source-routed.module-DP3RD454.js.map} +0 -0
- /package/client-dist/{scheduler.module-VH647PWD.js.map → scheduler.module-S3IKZCLL.js.map} +0 -0
- /package/client-dist/{setup.module-RRQZ62B2.js.map → setup.module-VTI5EZ3Q.js.map} +0 -0
- /package/client-dist/{terminals.module-QKIQS6FH.js.map → terminals.module-KHEDY6QN.js.map} +0 -0
- /package/client-dist/{voice-notes-poc.module-K3FB6OIB.js.map → voice-notes-poc.module-EMDLJJIT.js.map} +0 -0
- /package/client-dist/{wfs.module-JVR53PGJ.js.map → wfs.module-LUTFNQG5.js.map} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
//# sourceMappingURL=chunk-EGRHWZRV.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["src/app/_modules/dev/_modules/poc/_modules/voice-notes-poc/_services/vnp-input-ui.data-service.ts", "src/app/_enums/voice/ccap-stt-qa-word-diff-segment-kind.enum.ts", "src/app/_collections/utils/model-testing/ccap-stt-qa-text-diff.util.ts", "src/app/_components/ccap-voice-record-button/ccap-voice-record-button.component.ts", "src/app/_components/ccap-voice-record-button/ccap-voice-record-button.component.html"],
|
|
4
|
-
"sourcesContent": ["import { Injectable, signal, WritableSignal } from '@angular/core';\n\nimport { Shr_LocalStoragePersistence_Util } from '../../../../../../shared/_collections/utils/storage/shr-local-storage-persistence.util';\n\n/** localStorage kulcs — hang input után azonnali küldés (chat / külső konzolok). */\nconst CCAP_VOICE_INPUT_AUTO_SEND_AFTER_VOICE_KEY: string = 'ccap-voiceInput:autoSendAfterVoice';\n\n/**\n * Voice input composer globális UI állapot — a hang gomb beállítások paneljéből vezérelhető,\n * minden `app-ccap-voice-record-button` kontextusban ugyanaz a döntés érvényesül.\n *\n * REQ-UI-MENU-STATE-001 (cycle 459): a localStorage I/O most a shared\n * `Shr_LocalStoragePersistence_Util.readString / writeString` metódusokra\n * delegál. Az on-disk format (`'true'` / `'false'` literális string) változatlan\n * — szándékosan `writeString(String(value))` a `writeBoolean` (`'1'`/`'0'`)\n * helyett, hogy a meglévő spec round-trip elvárás (`getItem === 'true'`)\n * + a backward-compat felhasználói localStorage értékek konzisztensek\n * maradjanak. A best-effort try/catch most a shared util-ban van. A korábbi\n * top-level `function readAutoSendAfterVoiceFromStorage()` private static\n * methodként került be a class-ba (CLAUDE.md no-top-level-function).\n */\n@Injectable({ providedIn: 'root' })\nexport class VNP_InputUi_DataService {\n\n /** Ha true, a STT transcript után azonnal küldés fut (Mimik-minta); ha false, csak hozzáfűzés a mezőhöz. */\n readonly autoSendAfterVoice_$: WritableSignal<boolean> =\n signal<boolean>(VNP_InputUi_DataService.readAutoSendAfterVoiceFromStorage());\n\n /**\n * „Hang után azonnal\" toggle — signal + localStorage perzisztencia.\n */\n setAutoSendAfterVoice(value: boolean): void {\n this.autoSendAfterVoice_$.set(value);\n Shr_LocalStoragePersistence_Util.writeString(CCAP_VOICE_INPUT_AUTO_SEND_AFTER_VOICE_KEY, String(value));\n }\n\n /**\n * Böngészőből olvassa az „azonnal küldés hang után\" flag-et (default: false).\n */\n private static readAutoSendAfterVoiceFromStorage(): boolean {\n return Shr_LocalStoragePersistence_Util.readString(CCAP_VOICE_INPUT_AUTO_SEND_AFTER_VOICE_KEY) === 'true';\n }\n}\n", "/**\n * STT QA szöveg word-diff szegmens típusa (egyenlő / törölt / új).\n */\nexport enum CCAP_SttQaWordDiffSegmentKind_Type {\n equal = 'equal',\n removed = 'removed',\n added = 'added',\n}\n", "import { CCAP_SttQaWordDiffSegmentKind_Type } from '../../../_enums/voice/ccap-stt-qa-word-diff-segment-kind.enum';\nimport { CCAP_SttQaWordDiffSegment_Interface } from '../../../_models/interfaces/voice/transcribe/ccap-stt-qa-word-diff-segment.interface';\n\ntype CCAP_SttQaWordDiffRawSegment_Interface = {\n kind: CCAP_SttQaWordDiffSegmentKind_Type;\n text: string;\n};\n\n/**\n * STT QA eredeti vs javított szöveg word-token alapú diff (LCS) — modal összefoglaló highlight-hoz.\n */\nexport class CCAP_SttQaTextDiff_Util {\n /**\n * Whitespace-megtartó tokenizálás: szavak és whitespace külön token (LCS egy sorban tartja a szerkezetet).\n */\n private static tokenize(input: string): string[] {\n const trimmed: string = input;\n if (trimmed.length === 0) {\n return [];\n }\n const parts: string[] = trimmed.split(/(\\s+)/);\n const out: string[] = [];\n for (let i: number = 0; i < parts.length; i++) {\n const p: string = parts[i];\n if (p.length > 0) {\n out.push(p);\n }\n }\n return out;\n }\n\n /**\n * Egymás melletti azonos kind szegmensek összefűzése, majd id kiosztás.\n */\n private static mergeAndAssignIds(\n raw: CCAP_SttQaWordDiffRawSegment_Interface[],\n ): CCAP_SttQaWordDiffSegment_Interface[] {\n if (raw.length === 0) {\n return [];\n }\n const merged: CCAP_SttQaWordDiffRawSegment_Interface[] = [];\n for (let i: number = 0; i < raw.length; i++) {\n const cur: CCAP_SttQaWordDiffRawSegment_Interface = raw[i];\n const last: CCAP_SttQaWordDiffRawSegment_Interface | undefined = merged[merged.length - 1];\n if (last !== undefined && last.kind === cur.kind) {\n last.text = last.text + cur.text;\n } else {\n merged.push({ kind: cur.kind, text: cur.text });\n }\n }\n const withIds: CCAP_SttQaWordDiffSegment_Interface[] = [];\n for (let k: number = 0; k < merged.length; k++) {\n const m: CCAP_SttQaWordDiffRawSegment_Interface = merged[k];\n withIds.push({\n id: k,\n kind: m.kind,\n text: m.text,\n });\n }\n return withIds;\n }\n\n /**\n * Word-token LCS diff: unified sor — equal / removed / added szegmensek sorrendben (javított szöveg kontextusához).\n */\n static buildWordDiff(oldText: string, newText: string): CCAP_SttQaWordDiffSegment_Interface[] {\n const a: string[] = CCAP_SttQaTextDiff_Util.tokenize(oldText);\n const b: string[] = CCAP_SttQaTextDiff_Util.tokenize(newText);\n const n: number = a.length;\n const m: number = b.length;\n const dp: number[][] = [];\n for (let i: number = 0; i <= n; i++) {\n const row: number[] = [];\n for (let j: number = 0; j <= m; j++) {\n row.push(0);\n }\n dp.push(row);\n }\n for (let i: number = 1; i <= n; i++) {\n for (let j: number = 1; j <= m; j++) {\n if (a[i - 1] === b[j - 1]) {\n dp[i][j] = dp[i - 1][j - 1] + 1;\n } else {\n const up: number = dp[i - 1][j];\n const left: number = dp[i][j - 1];\n dp[i][j] = up > left ? up : left;\n }\n }\n }\n const rawBackwards: CCAP_SttQaWordDiffRawSegment_Interface[] = [];\n let i: number = n;\n let j: number = m;\n while (i > 0 || j > 0) {\n if (i > 0 && j > 0 && a[i - 1] === b[j - 1]) {\n rawBackwards.push({\n kind: CCAP_SttQaWordDiffSegmentKind_Type.equal,\n text: a[i - 1],\n });\n i -= 1;\n j -= 1;\n } else if (j > 0 && (i === 0 || dp[i][j - 1] >= dp[i - 1][j])) {\n rawBackwards.push({\n kind: CCAP_SttQaWordDiffSegmentKind_Type.added,\n text: b[j - 1],\n });\n j -= 1;\n } else if (i > 0) {\n rawBackwards.push({\n kind: CCAP_SttQaWordDiffSegmentKind_Type.removed,\n text: a[i - 1],\n });\n i -= 1;\n }\n }\n const rawForward: CCAP_SttQaWordDiffRawSegment_Interface[] = [];\n for (let k: number = rawBackwards.length - 1; k >= 0; k--) {\n rawForward.push(rawBackwards[k]);\n }\n return CCAP_SttQaTextDiff_Util.mergeAndAssignIds(rawForward);\n }\n}\n", "import {\n Component,\n OnInit,\n OnDestroy,\n input,\n InputSignal,\n Output,\n EventEmitter,\n inject,\n signal,\n computed,\n HostListener,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport type { CCAP_TranscribeSuccess_Response } from '../../_models/interfaces/voice/transcribe/ccap-transcribe-success-response.interface';\nimport type { CCAP_Transcribe_Response } from '../../_models/interfaces/voice/transcribe/ccap-transcribe-response.interface';\nimport type { CCAP_VoiceNotesQaSettings_Response as CCAP_VoiceNotesQaSettingsResponse_Interface } from '../../_models/interfaces/voice/voice-notes/ccap-voice-notes-qa-settings-response.interface';\nimport type { CCAP_LlmProviderSelectOption_Interface } from '../../_models/interfaces/settings/ccap-llm-provider-select-option.interface';\nimport type {\n Voc_SttQaConfusionMapEntry_Response,\n Voc_SttQaInput_Response,\n} from '../../_models/server-index';\nimport { CCAP_GlobalError_ControlService } from '../../_services/control-services/ccap-global-error.control-service';\nimport { CCAP_SoundRecorder_ControlService } from '../../_services/control-services/ccap-sound-recorder.control-service';\nimport { VNP_SttQaUi_DataService } from '../../_modules/dev/_modules/poc/_modules/voice-notes-poc/_services/vnp-stt-qa-ui.data-service';\nimport { VNP_InputUi_DataService } from '../../_modules/dev/_modules/poc/_modules/voice-notes-poc/_services/vnp-input-ui.data-service';\nimport { CCAP_SoundRecorderState_State } from '../../_enums/ccap-sound-recorder-state.enum';\nimport { CCAP_SoundRecorderChunkMeta_Interface } from '../../_services/control-services/ccap-sound-recorder-chunk-meta.interface';\nimport { CCAP_MediaRecording_Util } from '../../_collections/utils/media-recording/media-recording.util';\nimport { CCAP_SttQaTextDiff_Util } from '../../_collections/utils/model-testing/ccap-stt-qa-text-diff.util';\nimport { CCAP_SttQaWordDiffSegmentKind_Type } from '../../_enums/voice/ccap-stt-qa-word-diff-segment-kind.enum';\nimport { CCAP_SttQaWordDiffSegment_Interface } from '../../_models/interfaces/voice/transcribe/ccap-stt-qa-word-diff-segment.interface';\nimport { S_Modal_Component } from '../../_modules/shared/_components/s-modal/s-modal.component';\n\n/**\n * Beágyazható hangrögzítő gomb: rögzít → STT (és opcionális QA) → transcriptReady emit.\n * Inputokra rakható (pl. chat input felső border közepére).\n */\n@Component({\n selector: 'app-ccap-voice-record-button',\n standalone: true,\n imports: [FormsModule, S_Modal_Component],\n templateUrl: './ccap-voice-record-button.component.html',\n})\n/** CCAP_VoiceRecordButton_Component class. */\nexport class CCAP_VoiceRecordButton_Component implements OnInit, OnDestroy {\n\n private readonly globalError_CS: CCAP_GlobalError_ControlService =\n inject(CCAP_GlobalError_ControlService);\n private readonly soundRecorder_CS: CCAP_SoundRecorder_ControlService =\n inject(CCAP_SoundRecorder_ControlService);\n private readonly voiceSttQaUi_DS: VNP_SttQaUi_DataService =\n inject(VNP_SttQaUi_DataService);\n readonly voiceInputUi_DS: VNP_InputUi_DataService = inject(VNP_InputUi_DataService);\n\n /** STT QA bekapcsolva; ha nincs megadva, a mentett QA beállításból töltjük (GET qa-settings). */\n readonly qaEnabled: InputSignal<boolean | undefined> = input<boolean | undefined>(undefined);\n\n /** Compact layout: beállítás + infó gombok a rekordgomb fölé kerülnek (két oldal helyett). */\n readonly compactLayout: InputSignal<boolean> = input<boolean>(false);\n\n /** Sikeres transcribe után a végső szöveg (corrected vagy transcript). */\n @Output() transcriptReady = new EventEmitter<string>();\n\n /** Szegmens transcribe eredmény: szöveg + isFinal flag (auto-send akkumuláció a consumer-ben). */\n @Output() transcriptSegmentReady = new EventEmitter<{ text: string; isFinal: boolean }>();\n\n /** Felvétel / feldolgozás folyamatban (legalább egy transzkripció fut). */\n readonly busy_$ = signal<boolean>(false);\n /** Párhuzamos transzkripciók száma (mid-recording flush + final flush egyszerre futhat). */\n private pendingTranscriptionCount: number = 0;\n /**\n * Emit-sorrendesítő lánc: a transzkripciók párhuzamosan futnak (sebesség), de a\n * `transcriptReady` + `transcriptSegmentReady` emit-ek szigorúan chunkIndex-sorrendben\n * mennek ki. Enélkül ha egy rövidebb, `isFinal=true` szegmens előbb tér vissza a\n * hosszabb első szegmensnél, a consumer auto-send-je a teljes akkumulálás ELŐTT tüzelhet\n * (BUG-VO-001: 30s+ voice input elejének elvesztése).\n */\n private emitChain: Promise<void> = Promise.resolve();\n /** Hangerő 0..1 (volume gate indikátor). */\n readonly volume_$ = signal<number>(0);\n /** Betöltött QA beállítás qaEnabled (ha nem volt @Input). */\n private readonly isQaEnabledFromSettings_$ = signal<boolean>(false);\n /** Beállítások overlay nyitva. */\n readonly settingsOpen_$ = signal<boolean>(false);\n /** STT QA beállítások (betöltve); null ha még nincs. */\n readonly qaSettings_$ = signal<CCAP_VoiceNotesQaSettingsResponse_Interface | null>(null);\n /** Confusion map a beállításokban szerkesztve. */\n readonly confusionMapList_$ = signal<Voc_SttQaConfusionMapEntry_Response[]>([]);\n /** QA beállítások mentése folyamatban. */\n readonly qaSettingsSaving_$ = signal<boolean>(false);\n /** QA beállítások betöltése folyamatban. */\n readonly qaSettingsLoading_$ = signal<boolean>(false);\n /** STT QA toggle a beállításokban (szinkron isQaEnabledFromSettings-szel mentéskor). */\n settingsQaEnabled: boolean = false;\n /** STT QA provider és modell (beállítások form). */\n qaProviderName: string = '';\n qaModelName: string = '';\n /** LLM provider választó sorok (value + label), LLM settings-szel megegyező címkék. */\n readonly llmProviderSelectOptions_$ = signal<CCAP_LlmProviderSelectOption_Interface[]>([]);\n /** Kiválasztott QA provider modell listája. */\n readonly qaModelsForProvider_$ = signal<string[]>([]);\n /** list-llm-models hibaüzenet (üres = nincs); cloud provider / API hiba. */\n readonly qaModelsListFetchError_$ = signal<string>('');\n /** Utolsó STT QA javítás (eredeti → javított + opcionális magyarázat); null ha nem volt QA. */\n readonly lastQaTransformation_$ = signal<{\n original: string;\n corrected: string;\n explanation?: string;\n input?: Voc_SttQaInput_Response;\n } | null>(null);\n /** QA eredmény (infó) overlay nyitva. */\n readonly infoOpen_$ = signal<boolean>(false);\n /** Hangfelvétel nem elérhető (pl. nem secure context); null ha elérhető. User-facing message (title/aria). */\n readonly mediaUnavailable_$ = signal<string | null>(null);\n\n /** Globál alapértelmezett LLM provider (override jelzéshez). */\n readonly defaultLlmProvider_$ = signal<string>('');\n /** Globál alapértelmezett LLM modell (override jelzéshez). */\n readonly defaultLlmModel_$ = signal<string>('');\n\n /** Hangerő százalék (computed). */\n readonly volumePercent_$ = computed((): number => Math.min(100, this.volume_$() * 250));\n\n /** Modell választó: van lista a szerverről (vagy mentett modell merge). */\n readonly qaShowModelSelect_$ = computed((): boolean => this.qaModelsForProvider_$().length > 0);\n\n /**\n * Utolsó QA futás után a nyers STT és a corrected szöveg eltér — Info gomb vizuális kiemelése (még apró eltérés is).\n */\n readonly lastQaTextWasModified_$ = computed((): boolean => {\n const t: {\n original: string;\n corrected: string;\n explanation?: string;\n input?: Voc_SttQaInput_Response;\n } | null = this.lastQaTransformation_$();\n if (t === null) {\n return false;\n }\n return t.original !== t.corrected;\n });\n\n /**\n * Utolsó QA eredeti vs javított word-diff szegmensek — infó modal tetején highlighted összefoglaló.\n */\n readonly lastQaWordDiffSegments_$ = computed((): CCAP_SttQaWordDiffSegment_Interface[] => {\n const t: {\n original: string;\n corrected: string;\n explanation?: string;\n input?: Voc_SttQaInput_Response;\n } | null = this.lastQaTransformation_$();\n if (t === null || t.original === t.corrected) {\n return [];\n }\n return CCAP_SttQaTextDiff_Util.buildWordDiff(t.original, t.corrected);\n });\n\n /** Template: STT QA diff szegmens kind összehasonlítás. */\n readonly SttQaDiffKind: typeof CCAP_SttQaWordDiffSegmentKind_Type = CCAP_SttQaWordDiffSegmentKind_Type;\n\n /** Globál default provider megjelenített címke. */\n readonly defaultLlmProviderDisplayLabel_$ = computed((): string => {\n const opts: CCAP_LlmProviderSelectOption_Interface[] = this.llmProviderSelectOptions_$();\n const id: string = this.defaultLlmProvider_$().trim();\n if (!id.length) {\n return '';\n }\n const hit: CCAP_LlmProviderSelectOption_Interface | undefined = opts.find(\n (o: CCAP_LlmProviderSelectOption_Interface): boolean => o.value === id,\n );\n return hit?.label ?? id;\n });\n\n /** QA override provider címke (ha nincs az opciók között, nyers id). */\n readonly qaProviderDisplayLabel_$ = computed((): string => {\n const id: string = this.qaProviderName.trim();\n if (!id.length) {\n return '';\n }\n const opts: CCAP_LlmProviderSelectOption_Interface[] = this.llmProviderSelectOptions_$();\n const hit: CCAP_LlmProviderSelectOption_Interface | undefined = opts.find(\n (o: CCAP_LlmProviderSelectOption_Interface): boolean => o.value === id,\n );\n return hit?.label ?? id;\n });\n\n ngOnInit(): void {\n const availability = CCAP_MediaRecording_Util.getMediaRecordingAvailability();\n if (!availability.supported && availability.reason) {\n const reason: string = availability.reason;\n this.mediaUnavailable_$.set(CCAP_MediaRecording_Util.getMediaUnavailableMessage(reason));\n this.globalError_CS.reportErrorOnly({\n message: CCAP_MediaRecording_Util.getMediaUnavailableReportMessage(reason),\n source: 'ccap-voice-record-button',\n });\n }\n this.soundRecorder_CS.setOnChunk((blob: Blob, meta: CCAP_SoundRecorderChunkMeta_Interface): void => {\n void this.onChunk(blob, meta);\n });\n this.soundRecorder_CS.setOnVolume((value: number): void => {\n this.volume_$.set(value);\n });\n this.soundRecorder_CS.setOnError((err: unknown): void => {\n this.globalError_CS.showError(err, 'ccap-voice-record-button');\n });\n }\n\n ngOnDestroy(): void {\n this.soundRecorder_CS.stopListening();\n // Callback-eket NEM töröljük szándékosan:\n // 1. A stopListening aszinkron onstop handler-jének szüksége van az onChunkCb-re az utolsó chunk flush-jához.\n // 2. Ha navigáció történik és új voice-record-button jön létre, annak ngOnInit felülírja a callback-eket.\n // 3. setTimeout-os késleltetett törlés race condition-t okoz: ha az új component ngOnInit hamarabb fut\n // mint a setTimeout (mindig!), az új component callback-jeit is no-op-ra írja → volume indikátor\n // nem mozdul, chunk-ok elvesznek. A singleton service (providedIn: 'root') miatt ez 8 oldalon\n // minden navigáláskor reprodukálható bug.\n }\n\n /** Felvétel indítása vagy leállítása. */\n async toggleRecord(): Promise<void> {\n if (this.mediaUnavailable_$() !== null) {\n return;\n }\n const state: CCAP_SoundRecorderState_State = this.soundRecorder_CS.state_$();\n if (state === CCAP_SoundRecorderState_State.stopped) {\n if (this.qaEnabled() === undefined) {\n await this.loadQaEnabledOnce();\n }\n try {\n await this.soundRecorder_CS.startListening();\n } catch (err: unknown) {\n this.globalError_CS.showError(err, 'ccap-voice-record-button');\n }\n } else {\n this.soundRecorder_CS.stopListening();\n }\n }\n\n /** QA beállítás egyszeri betöltése (qaEnabled tárolására). */\n private async loadQaEnabledOnce(): Promise<void> {\n this.isQaEnabledFromSettings_$.set(await this.voiceSttQaUi_DS.fetchQaEnabledFlag());\n }\n\n /**\n * „Hang után azonnali küldés” — Voice Input beállítások panel; globál UI + localStorage.\n */\n handleAutoSendAfterVoiceChange(value: boolean): void {\n this.voiceInputUi_DS.setAutoSendAfterVoice(value);\n }\n\n /** Beállítások overlay megnyitása/bezárása. */\n toggleSettings(): void {\n this.settingsOpen_$.update((v: boolean): boolean => !v);\n if (!this.settingsOpen_$()) {\n return;\n }\n void this.loadQaSettings();\n }\n\n /** QA eredmény (infó) overlay megnyitása/bezárása. */\n toggleInfo(): void {\n this.infoOpen_$.update((v: boolean): boolean => !v);\n }\n\n /** STT QA beállítások betöltése (beállítások megnyitásakor). */\n async loadQaSettings(): Promise<void> {\n this.qaSettingsLoading_$.set(true);\n try {\n const state = await this.voiceSttQaUi_DS.loadSttQaSettingsPanelState();\n const res = state.qa;\n this.qaSettings_$.set(res);\n this.confusionMapList_$.set([...(res.confusionMap ?? [])]);\n this.settingsQaEnabled = res.qaEnabled === true;\n this.isQaEnabledFromSettings_$.set(res.qaEnabled === true);\n this.qaProviderName = res.providerName ?? '';\n this.qaModelName = res.modelName ?? '';\n this.llmProviderSelectOptions_$.set(state.llmProviderSelectOptions);\n this.defaultLlmProvider_$.set(state.defaultLlmProvider);\n this.defaultLlmModel_$.set(state.defaultLlmModel);\n this.qaModelsForProvider_$.set(state.qaModelsForProvider);\n this.qaModelsListFetchError_$.set(state.qaModelsListFetchError);\n } catch (err: unknown) {\n this.globalError_CS.showError(err, 'ccap-voice-record-button');\n this.qaSettings_$.set(null);\n this.confusionMapList_$.set([]);\n this.llmProviderSelectOptions_$.set([]);\n this.qaModelsListFetchError_$.set('');\n this.qaModelsForProvider_$.set([]);\n } finally {\n this.qaSettingsLoading_$.set(false);\n }\n }\n\n /** Kiválasztott QA provider modell listájának betöltése. */\n async loadQaModelsForProvider(providerId: string): Promise<void> {\n const out = await this.voiceSttQaUi_DS.fetchLlmModelsListForSttQa(providerId);\n this.qaModelsForProvider_$.set(out.models);\n this.qaModelsListFetchError_$.set(out.errorMessage);\n }\n\n /** QA provider megváltozott: modell lista újratöltése. */\n onQaProviderChange(): void {\n void this.loadQaModelsForProvider(this.qaProviderName);\n this.qaModelName = '';\n }\n\n /** Új confusion map sor hozzáadása. */\n addConfusionEntry(): void {\n this.confusionMapList_$.update(\n (list: Voc_SttQaConfusionMapEntry_Response[]): Voc_SttQaConfusionMapEntry_Response[] =>\n [...list, { from: '', to: '' }],\n );\n }\n\n /** Confusion map sor törlése. */\n removeConfusionEntry(index: number): void {\n this.confusionMapList_$.update(\n (list: Voc_SttQaConfusionMapEntry_Response[]): Voc_SttQaConfusionMapEntry_Response[] =>\n list.filter((_: Voc_SttQaConfusionMapEntry_Response, i: number): boolean => i !== index),\n );\n }\n\n /** Confusion map sor „from” mezőjének frissítése. */\n updateConfusionFrom(index: number, value: string): void {\n this.confusionMapList_$.update(\n (list: Voc_SttQaConfusionMapEntry_Response[]): Voc_SttQaConfusionMapEntry_Response[] => {\n const next: Voc_SttQaConfusionMapEntry_Response[] = [...list];\n if (next[index]) {\n next[index] = { from: value, to: next[index].to };\n }\n return next;\n },\n );\n }\n\n /** Confusion map sor „to” mezőjének frissítése. */\n updateConfusionTo(index: number, value: string): void {\n this.confusionMapList_$.update(\n (list: Voc_SttQaConfusionMapEntry_Response[]): Voc_SttQaConfusionMapEntry_Response[] => {\n const next: Voc_SttQaConfusionMapEntry_Response[] = [...list];\n if (next[index]) {\n next[index] = { from: next[index].from, to: value };\n }\n return next;\n },\n );\n }\n\n /** QA beállítások mentése a szerverre. */\n async saveQaSettings(): Promise<void> {\n this.qaSettingsSaving_$.set(true);\n try {\n const list: Voc_SttQaConfusionMapEntry_Response[] =\n this.voiceSttQaUi_DS.normalizeConfusionMapEntries(this.confusionMapList_$());\n\n await this.voiceSttQaUi_DS.saveVoiceNotesQaSettings({\n confusionMap: list,\n providerName: this.qaProviderName.trim() || undefined,\n modelName: this.qaModelName.trim() || undefined,\n qaEnabled: this.settingsQaEnabled,\n });\n this.confusionMapList_$.set([...list]);\n this.isQaEnabledFromSettings_$.set(this.settingsQaEnabled);\n const current = this.qaSettings_$();\n if (current !== null) {\n this.qaSettings_$.set({\n systemPrompt: current.systemPrompt,\n userPromptTemplate: current.userPromptTemplate,\n confusionMap: list,\n providerName: this.qaProviderName.trim() || '',\n modelName: this.qaModelName.trim() || '',\n qaEnabled: this.settingsQaEnabled,\n });\n }\n } catch (err: unknown) {\n this.globalError_CS.showError(err, 'ccap-voice-record-button');\n } finally {\n this.qaSettingsSaving_$.set(false);\n }\n }\n\n /** Escape: beállítások és QA eredmény overlay bezárása. */\n @HostListener('document:keydown.escape')\n onEscape(): void {\n if (this.settingsOpen_$()) {\n this.settingsOpen_$.set(false);\n }\n if (this.infoOpen_$()) {\n this.infoOpen_$.set(false);\n }\n }\n\n private readonly effectiveQaEnabled_$ = computed((): boolean => {\n if (this.qaEnabled() !== undefined) {\n return this.qaEnabled()!;\n }\n return this.isQaEnabledFromSettings_$();\n });\n\n /**\n * Chunk megérkezett: transcribe párhuzamosan, emit szigorúan chunkIndex-sorrendben.\n *\n * Sorrend-garancia: minden `onChunk` hívás captolja a korábbi `emitChain`-t, és a saját\n * új Promise-ét kiköti rá; a transzkripció azonnal indul (párhuzam megtartva), de az emit\n * csak a `prevEmitQueue` lejárta után történik. Ezzel az `isFinal=true` szegmens emit-je\n * mindig a korábbi (non-final) szegmensek emit-je UTÁN megy ki, akkor is, ha hamarabb\n * végez a transzkripcióval.\n */\n private async onChunk(\n blob: Blob,\n meta: CCAP_SoundRecorderChunkMeta_Interface,\n ): Promise<void> {\n this.pendingTranscriptionCount++;\n this.busy_$.set(true);\n // Emit-slot foglalás: captoljuk a korábbi láncot, és saját Promise-szal hosszabbítjuk.\n // A `releaseEmitSlot` a finally blokkban kell minden ágon lefusson, különben a következő\n // szegmens emit-je örökre blokkolódik.\n const prevEmitQueue: Promise<void> = this.emitChain;\n let releaseEmitSlot: () => void = () => {};\n this.emitChain = new Promise<void>((resolve: () => void) => {\n releaseEmitSlot = resolve;\n });\n try {\n const res: CCAP_Transcribe_Response = await this.voiceSttQaUi_DS.transcribeVoiceChunk({\n blob: blob,\n mimeType: meta.mimeType,\n filename: meta.filename,\n qaEnabled: this.effectiveQaEnabled_$(),\n noteContext: '',\n skipClassification: true,\n });\n // Várjunk a korábbi chunk-ok emit-jeinek befejeződésére, mielőtt mi emitelünk.\n // Transzkripció már megtörtént — csak az emit van sorrendesítve.\n await prevEmitQueue;\n if (res.ok === false) {\n // non_speech: a szegmensben nem volt felismerhető beszéd — nem hiba, de jelezzük a consumer-nek\n // hogy a szegmens feldolgozódott (isFinal propagálás a soron következő szegmensekhez).\n this.transcriptSegmentReady.emit({ text: '', isFinal: meta.isFinal });\n return;\n }\n const success: CCAP_TranscribeSuccess_Response = res;\n if (success.qaFailed === true) {\n const qfm: string = success.qaFailureMessage?.trim() ?? '';\n if (qfm.length > 0) {\n this.globalError_CS.showError(new Error(qfm), 'voice-stt-qa');\n }\n }\n const text: string =\n (success.correctedTranscript != null && success.correctedTranscript.trim().length > 0)\n ? success.correctedTranscript.trim()\n : (success.transcript ?? '').trim();\n // Csak usedQa=true eseten frissitjuk — parhuzamos chunk-oknal a QA nelkuli chunk ne torolje\n // az elozo chunk QA eredmenyet. \"Utolso QA eredmeny\" = utolso QA-t hasznalo chunk eredmenye.\n if (\n success.usedQa === true\n && (success.transcript ?? '').trim().length > 0\n && (success.correctedTranscript ?? '').trim().length > 0\n ) {\n this.lastQaTransformation_$.set({\n original: (success.transcript ?? '').trim(),\n corrected: (success.correctedTranscript ?? '').trim(),\n explanation: (success.qaExplanation ?? '').trim() || undefined,\n input: success.qaInput,\n });\n }\n if (text) {\n this.transcriptReady.emit(text);\n this.transcriptSegmentReady.emit({ text: text, isFinal: meta.isFinal });\n }\n } catch (err: unknown) {\n this.globalError_CS.showError(err, 'ccap-voice-record-button');\n } finally {\n // Emit-slot mindig fel kell oldani — különben a következő chunk emit-je blokkolódik.\n releaseEmitSlot();\n this.pendingTranscriptionCount--;\n if (this.pendingTranscriptionCount <= 0) {\n this.pendingTranscriptionCount = 0;\n this.busy_$.set(false);\n }\n }\n }\n\n /** Felvétel állapot (gomb szöveghez). */\n readonly recordStateLabel_$ = computed(\n (): string =>\n this.soundRecorder_CS.state_$() === CCAP_SoundRecorderState_State.stopped\n ? 'Felvétel'\n : 'Stop',\n );\n\n readonly isRecordActive_$ = computed((): boolean => {\n const s: CCAP_SoundRecorderState_State = this.soundRecorder_CS.state_$();\n return (\n s === CCAP_SoundRecorderState_State.standby\n || s === CCAP_SoundRecorderState_State.running\n );\n });\n\n readonly isRecording_$ = computed(\n (): boolean => this.soundRecorder_CS.state_$() === CCAP_SoundRecorderState_State.running,\n );\n\n /** Felvétel gomb aria-label: felvétel közben „Stop\"; feldolgozás alatt a gomb új felvételt indít (REQ-VO-002). */\n readonly recordButtonAriaLabel_$ = computed((): string => {\n const unavail: string | null = this.mediaUnavailable_$();\n if (unavail) return unavail;\n if (this.isRecordActive_$()) return 'Stop';\n return this.busy_$() ? 'Új felvétel (feldolgozás folyamatban)' : 'Felvétel';\n });\n\n /** Felvétel gomb title (tooltip): ugyanaz mint aria-label; feldolgozás alatt explicit utalás, hogy új felvétel indítható. */\n readonly recordButtonTitle_$ = computed((): string => {\n const unavail: string | null = this.mediaUnavailable_$();\n if (unavail) return unavail;\n if (this.isRecordActive_$()) return 'Stop';\n return this.busy_$() ? 'Új felvétel — előző feldolgozás folyamatban' : 'Felvétel';\n });\n}\n", "@if (compactLayout()) {\n <!-- Compact layout: beállítás + infó gombok a rekordgomb FÖLÉ -->\n <div class=\"flex flex-col items-center gap-1\">\n <div class=\"flex items-center gap-2\">\n <button type=\"button\"\n (click)=\"toggleSettings(); $event.stopPropagation()\"\n class=\"w-5 h-5 rounded-full flex items-center justify-center\n bg-neutral-900 border-2 border-neonDefault text-neonCyan\n hover:border-neonCyan hover:shadow-neon-glow-cyan transition-all duration-200\n focus:outline-none focus:ring-2 focus:ring-neonCyan focus:ring-offset-2 focus:ring-offset-neutral-900\"\n aria-label=\"Beállítások\"\n title=\"Beállítások\">\n <svg class=\"w-2.5 h-2.5 shrink-0\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\n <path d=\"M12 15a3 3 0 1 0 0-6 3 3 0 0 0 0 6Z\" />\n <path d=\"M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z\" />\n </svg>\n </button>\n <button type=\"button\"\n (click)=\"toggleInfo(); $event.stopPropagation()\"\n class=\"w-5 h-5 rounded-full flex items-center justify-center\n bg-neutral-900 border-2 transition-all duration-200\n focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-offset-neutral-900\"\n [class.border-neonDefault]=\"!lastQaTextWasModified_$()\"\n [class.text-neonCyan]=\"!lastQaTextWasModified_$()\"\n [class.hover:border-neonCyan]=\"!lastQaTextWasModified_$()\"\n [class.hover:shadow-neon-glow-cyan]=\"!lastQaTextWasModified_$()\"\n [class.focus:ring-neonCyan]=\"!lastQaTextWasModified_$()\"\n [class.border-neonAmber]=\"lastQaTextWasModified_$()\"\n [class.text-neonAmber]=\"lastQaTextWasModified_$()\"\n [class.shadow-neon-glow-orange]=\"lastQaTextWasModified_$()\"\n [class.hover:border-neonAmber]=\"lastQaTextWasModified_$()\"\n [class.hover:shadow-neon-glow-orange]=\"lastQaTextWasModified_$()\"\n [class.focus:ring-neonAmber]=\"lastQaTextWasModified_$()\"\n [attr.aria-label]=\"lastQaTextWasModified_$()\n ? 'Utolsó QA eredmény — a szöveg módosult'\n : 'Utolsó QA eredmény'\"\n [attr.title]=\"lastQaTextWasModified_$()\n ? 'Utolsó QA eredmény — a szöveg módosult (részletek)'\n : 'Utolsó QA eredmény'\">\n <svg class=\"w-2.5 h-2.5 shrink-0\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"M12 16v-4\" />\n <path d=\"M12 8h.01\" />\n </svg>\n </button>\n </div>\n <button type=\"button\"\n (click)=\"toggleRecord()\"\n [disabled]=\"mediaUnavailable_$() !== null\"\n class=\"flex items-center justify-center min-w-[44px] min-h-[44px] w-10 h-10 rounded-full shrink-0\n bg-neutral-900 border-2 text-white transition-all duration-200 disabled:opacity-50\n border-neonDefault hover:border-neonCyan hover:shadow-neon-glow-cyan\n focus:outline-none focus:ring-2 focus:ring-neonCyan focus:ring-offset-2 focus:ring-offset-neutral-900\"\n [class.border-neonCyan]=\"isRecordActive_$() || busy_$()\"\n [class.shadow-neon-glow-cyan]=\"isRecordActive_$() || busy_$()\"\n [class.animate-pulse]=\"isRecording_$()\"\n [attr.aria-label]=\"recordButtonAriaLabel_$()\"\n [attr.title]=\"recordButtonTitle_$()\">\n @if (busy_$() && !isRecordActive_$()) {\n <span class=\"inline-block w-5 h-5 shrink-0 animate-spin rounded-full border-2 border-neonCyan/40 border-t-neonCyan\"\n aria-hidden=\"true\"></span>\n } @else {\n <div class=\"flex flex-col items-center gap-0.5 shrink-0\">\n @if (isRecordActive_$()) {\n <div class=\"relative w-2 h-6 rounded-sm bg-neutral-800 overflow-hidden\"\n aria-hidden=\"true\">\n <div class=\"absolute inset-x-0 bottom-0 bg-neonCyan transition-[height] duration-75\"\n [style.height.%]=\"volumePercent_$()\"></div>\n <div class=\"absolute inset-x-0 h-0.5 bg-neonAmber rounded-sm z-10\"\n style=\"bottom: 5%;\"></div>\n </div>\n }\n <svg class=\"w-5 h-5 shrink-0 text-neonCyan\"\n viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\n <path d=\"M12 2a3 3 0 0 1 3 3v7a3 3 0 0 1-6 0V5a3 3 0 0 1 3-3Z\" />\n <path d=\"M19 10v2a7 7 0 0 1-14 0v-2\" />\n <line x1=\"12\" y1=\"19\" x2=\"12\" y2=\"22\" />\n </svg>\n </div>\n }\n </button>\n @if (mediaUnavailable_$(); as reason) {\n <!-- REQ-UI-VHTTPS-001: látható warning-blokk, ha nincs secure context / nem elérhető a mikrofon. -->\n <p class=\"text-[11px] text-amber-300 leading-tight max-w-[180px] text-center\"\n [attr.aria-live]=\"'polite'\">\n <span aria-hidden=\"true\" class=\"mr-1\">⚠</span>{{ reason }}\n </p>\n }\n </div>\n} @else {\n <!-- Default layout: beállítás balra, rekordgomb középen, infó jobbra (absolute) -->\n <div class=\"relative inline-flex\">\n <button type=\"button\"\n (click)=\"toggleRecord()\"\n [disabled]=\"mediaUnavailable_$() !== null\"\n class=\"flex items-center justify-center min-w-[44px] min-h-[44px] w-10 h-10 rounded-full shrink-0\n bg-neutral-900 border-2 text-white transition-all duration-200 disabled:opacity-50\n border-neonDefault hover:border-neonCyan hover:shadow-neon-glow-cyan\n focus:outline-none focus:ring-2 focus:ring-neonCyan focus:ring-offset-2 focus:ring-offset-neutral-900\"\n [class.border-neonCyan]=\"isRecordActive_$() || busy_$()\"\n [class.shadow-neon-glow-cyan]=\"isRecordActive_$() || busy_$()\"\n [class.animate-pulse]=\"isRecording_$()\"\n [attr.aria-label]=\"recordButtonAriaLabel_$()\"\n [attr.title]=\"recordButtonTitle_$()\">\n @if (busy_$() && !isRecordActive_$()) {\n <span class=\"inline-block w-5 h-5 shrink-0 animate-spin rounded-full border-2 border-neonCyan/40 border-t-neonCyan\"\n aria-hidden=\"true\"></span>\n } @else {\n <div class=\"flex flex-col items-center gap-0.5 shrink-0\">\n @if (isRecordActive_$()) {\n <div class=\"relative w-2 h-6 rounded-sm bg-neutral-800 overflow-hidden\"\n aria-hidden=\"true\">\n <div class=\"absolute inset-x-0 bottom-0 bg-neonCyan transition-[height] duration-75\"\n [style.height.%]=\"volumePercent_$()\"></div>\n <div class=\"absolute inset-x-0 h-0.5 bg-neonAmber rounded-sm z-10\"\n style=\"bottom: 5%;\"></div>\n </div>\n }\n <svg class=\"w-5 h-5 shrink-0 text-neonCyan\"\n viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\n <path d=\"M12 2a3 3 0 0 1 3 3v7a3 3 0 0 1-6 0V5a3 3 0 0 1 3-3Z\" />\n <path d=\"M19 10v2a7 7 0 0 1-14 0v-2\" />\n <line x1=\"12\" y1=\"19\" x2=\"12\" y2=\"22\" />\n </svg>\n </div>\n }\n </button>\n <button type=\"button\"\n (click)=\"toggleSettings(); $event.stopPropagation()\"\n class=\"absolute right-full mr-4 top-1/2 -translate-y-1/2 w-5 h-5 rounded-full flex items-center justify-center\n bg-neutral-900 border-2 border-neonDefault text-neonCyan\n hover:border-neonCyan hover:shadow-neon-glow-cyan transition-all duration-200\n focus:outline-none focus:ring-2 focus:ring-neonCyan focus:ring-offset-2 focus:ring-offset-neutral-900\"\n aria-label=\"Beállítások\"\n title=\"Beállítások\">\n <svg class=\"w-2.5 h-2.5 shrink-0\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\n <path d=\"M12 15a3 3 0 1 0 0-6 3 3 0 0 0 0 6Z\" />\n <path d=\"M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z\" />\n </svg>\n </button>\n <button type=\"button\"\n (click)=\"toggleInfo(); $event.stopPropagation()\"\n class=\"absolute left-full ml-4 top-1/2 -translate-y-1/2 w-5 h-5 rounded-full flex items-center justify-center\n bg-neutral-900 border-2 transition-all duration-200\n focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-offset-neutral-900\"\n [class.border-neonDefault]=\"!lastQaTextWasModified_$()\"\n [class.text-neonCyan]=\"!lastQaTextWasModified_$()\"\n [class.hover:border-neonCyan]=\"!lastQaTextWasModified_$()\"\n [class.hover:shadow-neon-glow-cyan]=\"!lastQaTextWasModified_$()\"\n [class.focus:ring-neonCyan]=\"!lastQaTextWasModified_$()\"\n [class.border-neonAmber]=\"lastQaTextWasModified_$()\"\n [class.text-neonAmber]=\"lastQaTextWasModified_$()\"\n [class.shadow-neon-glow-orange]=\"lastQaTextWasModified_$()\"\n [class.hover:border-neonAmber]=\"lastQaTextWasModified_$()\"\n [class.hover:shadow-neon-glow-orange]=\"lastQaTextWasModified_$()\"\n [class.focus:ring-neonAmber]=\"lastQaTextWasModified_$()\"\n [attr.aria-label]=\"lastQaTextWasModified_$()\n ? 'Utolsó QA eredmény — a szöveg módosult'\n : 'Utolsó QA eredmény'\"\n [attr.title]=\"lastQaTextWasModified_$()\n ? 'Utolsó QA eredmény — a szöveg módosult (részletek)'\n : 'Utolsó QA eredmény'\">\n <svg class=\"w-2.5 h-2.5 shrink-0\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"M12 16v-4\" />\n <path d=\"M12 8h.01\" />\n </svg>\n </button>\n </div>\n @if (mediaUnavailable_$(); as reason) {\n <!-- REQ-UI-VHTTPS-001: látható warning-blokk, ha nincs secure context / nem elérhető a mikrofon. -->\n <p class=\"text-[11px] text-amber-300 leading-tight max-w-[240px] mt-1\"\n [attr.aria-live]=\"'polite'\">\n <span aria-hidden=\"true\" class=\"mr-1\">⚠</span>{{ reason }}\n </p>\n }\n}\n\n<app-s-modal [isOpen]=\"settingsOpen_$()\"\n [title]=\"'Voice Input beállítások'\"\n [maxWidth]=\"'lg'\"\n [zIndex]=\"'40'\"\n [bodyFlexColumn]=\"true\"\n (closed)=\"settingsOpen_$.set(false)\">\n <!-- Teljes body egy scroll region: mobil-on a hosszú promptok nem lógnak ki a max-h-[90vh] panel alól. -->\n <div class=\"flex flex-col flex-1 min-h-0 w-full overflow-y-auto overflow-x-hidden overscroll-y-contain\">\n <div class=\"flex flex-col gap-2 shrink-0\">\n <label class=\"flex items-center gap-2 cursor-pointer select-none\">\n <input type=\"checkbox\" [(ngModel)]=\"settingsQaEnabled\" name=\"settingsQaEnabled\" />\n <span class=\"text-sm text-neutral-300\">STT QA</span>\n </label>\n <label class=\"flex items-center gap-2 cursor-pointer select-none\">\n <input type=\"checkbox\"\n name=\"autoSendAfterVoice\"\n [ngModel]=\"voiceInputUi_DS.autoSendAfterVoice_$()\"\n (ngModelChange)=\"handleAutoSendAfterVoiceChange($event)\" />\n <span class=\"text-sm text-neutral-300\">Send immediately after voice (Mimik-style)</span>\n </label>\n </div>\n\n @if (qaSettings_$(); as qaSettings) {\n <div class=\"mt-3 pt-3 border-t border-neonDefault flex flex-col gap-3 shrink-0\">\n <div class=\"shrink-0\">\n <p class=\"text-xs font-medium text-neutral-400 mb-1\">System prompt (LLM-nek)</p>\n <p class=\"text-xs text-neutral-300 whitespace-pre-wrap break-words\">{{ qaSettings.systemPrompt }}</p>\n </div>\n <div class=\"shrink-0\">\n <p class=\"text-xs font-medium text-neutral-400 mb-1\">\n User prompt sablon (ide fűződik be a felvétel adata)\n </p>\n <p class=\"text-xs text-neutral-300 whitespace-pre-wrap break-words font-mono\">\n {{ qaSettings.userPromptTemplate }}\n </p>\n <p class=\"text-[10px] text-neonAmber mt-1\">\n Placeholderek: {{ '{{TRANSCRIPT}}' }} = nyers szöveg, {{ '{{NOTE_CONTEXT}}' }} = jegyzet,\n {{ '{{CONFUSION_MAP}}' }} = az alábbi elírás lista JSON-ban.\n </p>\n </div>\n <div class=\"shrink-0\">\n <p class=\"text-xs font-medium text-neutral-400 mb-1\">STT QA provider és modell</p>\n @if (qaProviderName.trim()) {\n <p class=\"text-[10px] text-neutral-500 mb-1\">\n Override: {{ qaProviderDisplayLabel_$() }} / {{ qaModelName || '—' }}\n (globál: {{ defaultLlmProviderDisplayLabel_$() || '—' }} / {{ defaultLlmModel_$() || '—' }}).\n </p>\n } @else {\n <p class=\"text-[10px] text-neutral-500 mb-1\">\n Nincs beállítva – használt: {{ defaultLlmProviderDisplayLabel_$() || '—' }} /\n {{ defaultLlmModel_$() || '—' }} (globál).\n </p>\n }\n <div class=\"flex flex-wrap gap-2 items-center\">\n <select [(ngModel)]=\"qaProviderName\"\n (ngModelChange)=\"onQaProviderChange()\"\n name=\"qaProviderName\"\n class=\"px-2 py-1 text-xs bg-neutral-800 border border-neonDefault rounded text-neutral-200 min-w-[120px]\">\n <option value=\"\">— default —</option>\n @for (opt of llmProviderSelectOptions_$(); track opt.value) {\n <option [value]=\"opt.value\">{{ opt.label }}</option>\n }\n </select>\n @if (qaShowModelSelect_$()) {\n <select [(ngModel)]=\"qaModelName\"\n name=\"qaModelName\"\n class=\"px-2 py-1 text-xs bg-neutral-800 border border-neonDefault rounded text-neutral-200 min-w-[140px]\">\n <option value=\"\">— default —</option>\n @for (m of qaModelsForProvider_$(); track m) {\n <option [value]=\"m\">{{ m }}</option>\n }\n </select>\n } @else {\n <input type=\"text\"\n [(ngModel)]=\"qaModelName\"\n name=\"qaModelNameText\"\n placeholder=\"Modell id (lista nem elérhető ehhez a providerhez)\"\n class=\"px-2 py-1 text-xs bg-neutral-800 border border-neonDefault rounded text-neutral-200 min-w-[140px] font-mono\" />\n }\n </div>\n @if (qaModelsListFetchError_$().trim()) {\n <p class=\"text-[10px] text-amber-300/90 mt-1\">{{ qaModelsListFetchError_$() }}</p>\n }\n </div>\n <div class=\"flex flex-col shrink-0\">\n <p class=\"text-xs font-medium text-neutral-400 mb-1 shrink-0\">\n Tipikus elírások / tipók (confusion map) – ezekre javít a QA\n </p>\n <div class=\"space-y-1.5 rounded border border-neonDefault/50 bg-neutral-800/20 p-2\">\n @for (entry of confusionMapList_$(); track $index; let i = $index) {\n <div class=\"flex items-center gap-2\">\n <input type=\"text\"\n [value]=\"entry.from\"\n (input)=\"updateConfusionFrom(i, $any($event.target).value)\"\n placeholder=\"Elírás / félrehallás\"\n class=\"flex-1 min-w-0 px-2 py-1 text-xs bg-neutral-800 border border-neonDefault rounded\n text-neutral-200 placeholder-neutral-500\" />\n <span class=\"text-neutral-500 shrink-0\">→</span>\n <input type=\"text\"\n [value]=\"entry.to\"\n (input)=\"updateConfusionTo(i, $any($event.target).value)\"\n placeholder=\"Helyes forma\"\n class=\"flex-1 min-w-0 px-2 py-1 text-xs bg-neutral-800 border border-neonDefault rounded\n text-neutral-200 placeholder-neutral-500\" />\n <button type=\"button\"\n (click)=\"removeConfusionEntry(i)\"\n class=\"shrink-0 p-1 text-neutral-500 hover:text-neonRed transition-colors\"\n aria-label=\"Sor törlése\"\n title=\"Sor törlése\">\n <span class=\"sr-only\">Törlés</span>\n <svg class=\"w-3.5 h-3.5\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n <path d=\"M18 6L6 18M6 6l12 12\" />\n </svg>\n </button>\n </div>\n }\n </div>\n <div class=\"flex flex-wrap gap-2 items-center shrink-0 mt-2\">\n <button type=\"button\"\n (click)=\"addConfusionEntry()\"\n class=\"px-2 py-1 text-xs border border-neonDefault rounded text-neutral-400\n hover:border-neonCyan hover:text-neonCyan transition-colors\">\n + Sor hozzáadása\n </button>\n <button type=\"button\"\n (click)=\"saveQaSettings()\"\n [disabled]=\"qaSettingsSaving_$()\"\n class=\"px-2 py-1 text-xs border border-neonCyan rounded text-neonCyan\n hover:shadow-neon-glow-cyan disabled:opacity-50 transition-colors\">\n {{ qaSettingsSaving_$() ? 'Mentés…' : 'QA beállítások mentése' }}\n </button>\n </div>\n </div>\n </div>\n } @else if (qaSettingsLoading_$()) {\n <p class=\"mt-3 pt-3 border-t border-neonDefault text-xs text-neutral-400\">QA beállítások betöltése…</p>\n } @else {\n <p class=\"mt-3 pt-3 border-t border-neonDefault text-xs text-neutral-500\">\n A QA beállítások betöltése sikertelen.\n </p>\n <button type=\"button\"\n (click)=\"loadQaSettings()\"\n class=\"mt-1.5 px-2 py-1 text-xs border border-neonDefault rounded text-neutral-400\n hover:border-neonCyan hover:text-neonCyan transition-colors\">\n Újra betöltés\n </button>\n }\n </div>\n <div modal-footer class=\"shrink-0 px-4 py-3 border-t border-neonDefault\">\n <button type=\"button\"\n class=\"w-full px-3 py-1.5 text-sm border border-neonCyan rounded text-neutral-300\n hover:shadow-neon-glow-cyan transition-colors\"\n (click)=\"settingsOpen_$.set(false)\">\n Bezárás\n </button>\n </div>\n</app-s-modal>\n\n<app-s-modal [isOpen]=\"infoOpen_$()\"\n [title]=\"'Utolsó QA eredmény'\"\n [maxWidth]=\"'md'\"\n [zIndex]=\"'40'\"\n (closed)=\"infoOpen_$.set(false)\">\n @if (lastQaTransformation_$(); as qa) {\n <div class=\"space-y-2 text-sm\">\n @if (lastQaWordDiffSegments_$().length > 0) {\n <div class=\"rounded-md border border-neonAmber/45 bg-neutral-950/95 p-2.5 mb-1\">\n <p class=\"text-[10px] font-semibold uppercase tracking-wide text-neonAmber/90 mb-1.5\">\n Változások (kiemelve)\n </p>\n <p class=\"text-xs leading-relaxed whitespace-pre-wrap break-words\">\n @for (seg of lastQaWordDiffSegments_$(); track seg.id) {\n @if (seg.kind === SttQaDiffKind.equal) {\n <span class=\"text-neutral-300\">{{ seg.text }}</span>\n } @else if (seg.kind === SttQaDiffKind.removed) {\n <span class=\"mx-0.5 inline rounded px-0.5 text-red-300/95 line-through decoration-red-400/85\n bg-red-950/50 border border-red-900/45\">{{ seg.text }}</span>\n } @else {\n <span class=\"mx-0.5 inline rounded px-0.5 text-neonAmber bg-amber-950/55 border border-neonAmber/50\n shadow-[0_0_10px_rgb(251_191_36/0.28)]\">{{ seg.text }}</span>\n }\n }\n </p>\n <p class=\"text-[10px] text-neutral-500 mt-1.5 leading-snug\">\n Áthúzva: nyers STT; kiemelve: javított szöveg. Alább a teljes két változat.\n </p>\n </div>\n }\n <p class=\"font-medium text-neonAmber\">Volt módosítás: igen.</p>\n <p class=\"text-neutral-400 text-xs\">Eredeti (nyers STT):</p>\n <p class=\"text-neutral-200 break-words\">{{ qa.original }}</p>\n <p class=\"text-neutral-400 text-xs mt-2\">Javított:</p>\n <p class=\"text-neutral-200 break-words\">{{ qa.corrected }}</p>\n @if (qa.explanation) {\n <p class=\"text-neutral-400 text-xs mt-2\">Magyarázat:</p>\n <p class=\"text-neutral-300 break-words\">{{ qa.explanation }}</p>\n }\n </div>\n } @else {\n <p class=\"text-xs text-neutral-500\">\n Még nem volt STT QA javítás.\n </p>\n }\n <div modal-footer class=\"shrink-0 px-4 py-3 border-t border-neonDefault\">\n <button type=\"button\"\n class=\"w-full px-3 py-1.5 text-sm border border-neonCyan rounded text-neutral-300\n hover:shadow-neon-glow-cyan transition-colors\"\n (click)=\"infoOpen_$.set(false)\">\n Bezárás\n </button>\n </div>\n</app-s-modal>\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["CCAP_VOICE_INPUT_AUTO_SEND_AFTER_VOICE_KEY", "VNP_InputUi_DataService", "autoSendAfterVoice_$", "signal", "readAutoSendAfterVoiceFromStorage", "setAutoSendAfterVoice", "value", "set", "Shr_LocalStoragePersistence_Util", "writeString", "String", "readString", "factory", "\u0275fac", "providedIn", "CCAP_SttQaWordDiffSegmentKind_Type", "CCAP_SttQaTextDiff_Util", "tokenize", "input", "trimmed", "length", "parts", "split", "out", "i", "p", "push", "mergeAndAssignIds", "raw", "merged", "cur", "last", "undefined", "kind", "text", "withIds", "k", "m", "id", "buildWordDiff", "oldText", "newText", "a", "b", "n", "dp", "row", "j", "up", "left", "rawBackwards", "CCAP_SttQaWordDiffSegmentKind_Type", "equal", "added", "removed", "rawForward", "\u0275\u0275element", "\u0275\u0275elementStart", "\u0275\u0275elementEnd", "\u0275\u0275advance", "\u0275\u0275styleProp", "ctx_r1", "volumePercent_$", "\u0275\u0275template", "CCAP_VoiceRecordButton_Component_Conditional_0_Conditional_13_Conditional_1_Template", "\u0275\u0275conditional", "isRecordActive_$", "\u0275\u0275text", "\u0275\u0275textInterpolate1", "ctx", "\u0275\u0275listener", "$event", "i0", "\u0275\u0275restoreView", "_r1", "\u0275\u0275nextContext", "toggleSettings", "\u0275\u0275resetView", "stopPropagation", "toggleInfo", "toggleRecord", "CCAP_VoiceRecordButton_Component_Conditional_0_Conditional_12_Template", "CCAP_VoiceRecordButton_Component_Conditional_0_Conditional_13_Template", "CCAP_VoiceRecordButton_Component_Conditional_0_Conditional_14_Template", "\u0275\u0275classProp", "lastQaTextWasModified_$", "busy_$", "isRecording_$", "\u0275\u0275property", "mediaUnavailable_$", "tmp_21_0", "CCAP_VoiceRecordButton_Component_Conditional_1_Conditional_3_Conditional_1_Template", "_r3", "CCAP_VoiceRecordButton_Component_Conditional_1_Conditional_2_Template", "CCAP_VoiceRecordButton_Component_Conditional_1_Conditional_3_Template", "CCAP_VoiceRecordButton_Component_Conditional_1_Conditional_13_Template", "\u0275\u0275textInterpolate4", "qaProviderDisplayLabel_$", "qaModelName", "defaultLlmProviderDisplayLabel_$", "defaultLlmModel_$", "\u0275\u0275textInterpolate2", "opt_r5", "value", "\u0275\u0275textInterpolate", "label", "m_r7", "\u0275\u0275twoWayListener", "_r6", "\u0275\u0275twoWayBindingSet", "\u0275\u0275repeaterCreate", "CCAP_VoiceRecordButton_Component_Conditional_13_Conditional_24_For_4_Template", "\u0275\u0275repeaterTrackByIdentity", "\u0275\u0275twoWayProperty", "\u0275\u0275repeater", "qaModelsForProvider_$", "_r8", "qaModelsListFetchError_$", "\u0275$index_195_r10", "_r9", "$index", "updateConfusionFrom", "target", "updateConfusionTo", "removeConfusionEntry", "entry_r11", "from", "to", "CCAP_VoiceRecordButton_Component_Conditional_13_Conditional_16_Template", "CCAP_VoiceRecordButton_Component_Conditional_13_Conditional_17_Template", "_r4", "qaProviderName", "onQaProviderChange", "CCAP_VoiceRecordButton_Component_Conditional_13_For_23_Template", "_forTrack0", "CCAP_VoiceRecordButton_Component_Conditional_13_Conditional_24_Template", "CCAP_VoiceRecordButton_Component_Conditional_13_Conditional_25_Template", "CCAP_VoiceRecordButton_Component_Conditional_13_Conditional_26_Template", "CCAP_VoiceRecordButton_Component_Conditional_13_For_32_Template", "\u0275\u0275repeaterTrackByIndex", "addConfusionEntry", "saveQaSettings", "qaSettings_r12", "systemPrompt", "userPromptTemplate", "\u0275\u0275textInterpolate3", "trim", "llmProviderSelectOptions_$", "qaShowModelSelect_$", "confusionMapList_$", "qaSettingsSaving_$", "_r13", "loadQaSettings", "seg_r14", "text", "CCAP_VoiceRecordButton_Component_Conditional_20_Conditional_1_For_5_Conditional_0_Template", "CCAP_VoiceRecordButton_Component_Conditional_20_Conditional_1_For_5_Conditional_1_Template", "CCAP_VoiceRecordButton_Component_Conditional_20_Conditional_1_For_5_Conditional_2_Template", "kind", "SttQaDiffKind", "equal", "removed", "CCAP_VoiceRecordButton_Component_Conditional_20_Conditional_1_For_5_Template", "_forTrack1", "lastQaWordDiffSegments_$", "qa_r15", "explanation", "CCAP_VoiceRecordButton_Component_Conditional_20_Conditional_1_Template", "CCAP_VoiceRecordButton_Component_Conditional_20_Conditional_12_Template", "length", "original", "corrected", "CCAP_VoiceRecordButton_Component", "globalError_CS", "inject", "CCAP_GlobalError_ControlService", "soundRecorder_CS", "CCAP_SoundRecorder_ControlService", "voiceSttQaUi_DS", "VNP_SttQaUi_DataService", "voiceInputUi_DS", "VNP_InputUi_DataService", "qaEnabled", "input", "undefined", "compactLayout", "transcriptReady", "EventEmitter", "transcriptSegmentReady", "signal", "pendingTranscriptionCount", "emitChain", "Promise", "resolve", "volume_$", "isQaEnabledFromSettings_$", "settingsOpen_$", "qaSettings_$", "qaSettingsLoading_$", "settingsQaEnabled", "lastQaTransformation_$", "infoOpen_$", "defaultLlmProvider_$", "computed", "Math", "min", "t", "CCAP_SttQaTextDiff_Util", "buildWordDiff", "CCAP_SttQaWordDiffSegmentKind_Type", "opts", "id", "find", "o", "ngOnInit", "availability", "CCAP_MediaRecording_Util", "getMediaRecordingAvailability", "supported", "reason", "set", "getMediaUnavailableMessage", "reportErrorOnly", "message", "getMediaUnavailableReportMessage", "source", "setOnChunk", "blob", "meta", "onChunk", "setOnVolume", "setOnError", "err", "showError", "ngOnDestroy", "stopListening", "__async", "state_$", "CCAP_SoundRecorderState_State", "stopped", "loadQaEnabledOnce", "startListening", "fetchQaEnabledFlag", "handleAutoSendAfterVoiceChange", "setAutoSendAfterVoice", "update", "v", "state", "loadSttQaSettingsPanelState", "res", "qa", "confusionMap", "providerName", "modelName", "llmProviderSelectOptions", "defaultLlmProvider", "defaultLlmModel", "qaModelsForProvider", "qaModelsListFetchError", "loadQaModelsForProvider", "providerId", "out", "fetchLlmModelsListForSttQa", "models", "errorMessage", "list", "index", "filter", "_", "i", "next", "normalizeConfusionMapEntries", "saveVoiceNotesQaSettings", "current", "onEscape", "effectiveQaEnabled_$", "prevEmitQueue", "releaseEmitSlot", "transcribeVoiceChunk", "mimeType", "filename", "noteContext", "skipClassification", "ok", "emit", "isFinal", "success", "qaFailed", "qfm", "qaFailureMessage", "Error", "correctedTranscript", "transcript", "usedQa", "qaExplanation", "qaInput", "recordStateLabel_$", "s", "standby", "running", "recordButtonAriaLabel_$", "unavail", "recordButtonTitle_$", "selectors", "hostBindings", "rf", "\u0275\u0275resolveDocument", "CCAP_VoiceRecordButton_Component_Conditional_0_Template", "CCAP_VoiceRecordButton_Component_Conditional_1_Template", "CCAP_VoiceRecordButton_Component_Conditional_13_Template", "CCAP_VoiceRecordButton_Component_Conditional_14_Template", "CCAP_VoiceRecordButton_Component_Conditional_15_Template", "CCAP_VoiceRecordButton_Component_Conditional_20_Template", "CCAP_VoiceRecordButton_Component_Conditional_21_Template", "autoSendAfterVoice_$", "tmp_8_0", "tmp_13_0", "FormsModule", "NgSelectOption", "\u0275NgSelectMultipleOption", "DefaultValueAccessor", "CheckboxControlValueAccessor", "SelectControlValueAccessor", "NgControlStatus", "NgModel", "S_Modal_Component", "encapsulation"]
|
|
7
|
-
}
|