@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,2 +0,0 @@
|
|
|
1
|
-
import{a as k}from"./chunk-R5WCLLO5.js";import{a as C}from"./chunk-V3VQWJQL.js";import{I as U,L as P,t as A}from"./chunk-SLSTIBOT.js";import{C as h,k as m,p as a,xb as M,y as b}from"./chunk-TBMJSIBB.js";var y=class{static readLlmCloudBucketsFromSectionResponse(n){return{anthropicLlm:v(n.anthropicSettings,{includeBaseUrl:!1}),googleLlm:v(n.googleSettings,{includeBaseUrl:!1}),deepseekLlm:v(n.deepseekSettings,{includeBaseUrl:!1}),fdpaiLlm:v(n.fdpaiSettings,{includeBaseUrl:!0})}}};function v(s,n){if(s==null||typeof s!="object"||Array.isArray(s))return{enabled:!1,defaultModel:"",baseUrl:"",apiKey:"",apiKeyMasked:""};let e=Reflect.get(s,"defaultModel"),o=Reflect.get(s,"apiKeyMasked"),i=Reflect.get(s,"baseUrl");return{enabled:Reflect.get(s,"enabled")===!0,defaultModel:typeof e=="string"?e:"",baseUrl:n.includeBaseUrl&&typeof i=="string"?i:"",apiKey:"",apiKeyMasked:typeof o=="string"?o:""}}var L=class{static parseLlmSettingsSectionForUi(n){let e=n.openAiSettings,o=!1,i="gpt-4o";if(e!=null&&typeof e=="object"&&!Array.isArray(e)){o=Reflect.get(e,"enabled")===!0;let t=Reflect.get(e,"defaultModel");typeof t=="string"&&(i=t)}let c=(Array.isArray(n.localAiSettings)?n.localAiSettings:[]).filter(t=>t!=null&&typeof t=="object"&&!Array.isArray(t)).map(t=>{let g=typeof t.key=="string"?t.key.trim():"";if(!g.length)return null;let S=typeof t.name=="string"?t.name:"",$=k.build({localAiKey:g}),T=S.trim().length>0?S.trim():"Local AI",_=t.enabled!==!1;return{id:$,baseUrl:(typeof t.baseUrl=="string"?t.baseUrl:"").trim(),model:(typeof t.defaultModel=="string"?t.defaultModel:"").trim(),label:T,enabled:_}}).filter(t=>t!=null),d=y.readLlmCloudBucketsFromSectionResponse(n),l=[];o&&l.push("open-ai"),d.anthropicLlm.enabled&&l.push("anthropic"),d.googleLlm.enabled&&l.push("google"),d.deepseekLlm.enabled&&l.push("deepseek"),d.fdpaiLlm.enabled&&l.push("fdp-ai");for(let t of c)t.enabled&&l.push(t.id);l.length===0&&l.push("open-ai");let F=c.map(t=>({id:t.id,label:t.label})),V=l.map(t=>({value:t,label:C.resolve(t,F)})),p=typeof n.defaultLlmProvider=="string"?n.defaultLlmProvider:"open-ai",u="";if(p==="open-ai")u=i;else if(p==="anthropic")u=d.anthropicLlm.defaultModel;else if(p==="google")u=d.googleLlm.defaultModel;else if(p==="deepseek")u=d.deepseekLlm.defaultModel;else if(p==="fdp-ai")u=d.fdpaiLlm.defaultModel;else{let t=c.find(g=>g.id===p);t&&(u=t.model)}return{enabledLlmProviderIds:l,llmProviderSelectOptions:V,defaultLlmProvider:p.trim(),defaultLlmModel:u.trim()}}};var I=(()=>{class s{baseUrl=`${U.api.baseUrl}/voice`;http=h(M);fetchVoiceNotesPoc(){return a(this.http.get(`${this.baseUrl}/poc/get-notes`))}fetchVoiceNotesQaSettings(){return a(this.http.get(`${this.baseUrl}/notes/qa-settings`))}saveVoiceNotesQaSettings(e){return a(this.http.put(`${this.baseUrl}/notes/qa-settings`,e,{headers:{"Content-Type":"application/json"}}))}saveVoiceNotesPoc(e){return a(this.http.put(`${this.baseUrl}/notes/poc`,e))}transcribeVoiceChunk(e){let o={qa:e.qaEnabled===!0?"1":"0",skip_classification:e.skipClassification!==!1?"true":"false"};e.confidenceThreshold!==void 0&&(o.confidence_threshold=String(e.confidenceThreshold)),e.noteContext!==void 0&&(o.note_context=e.noteContext);let i=Object.keys(o).map(c=>`${encodeURIComponent(c)}=${encodeURIComponent(o[c])}`).join("&"),f=`${this.baseUrl}/notes/transcribe${i?`?${i}`:""}`,r={"Content-Type":e.mimeType,Filename:e.filename};return a(this.http.post(f,e.blob,{headers:r}))}generateTtsSpeechBlob(e){return a(this.http.post(`${this.baseUrl}/tts/speech`,{input:e.text},{responseType:"blob"}))}getTtsMessageAudioUrl(e){let o=typeof e=="string"?e.trim():"";return o?`${this.baseUrl}/tts/message-audio/${encodeURIComponent(o)}`:""}getOrCreateTtsMessageAudio(e){return a(this.http.post(`${this.baseUrl}/tts/message-audio`,{sessionId:e.sessionId,role:e.role,content:e.content,timestamp:e.timestamp},{responseType:"blob",headers:{"Content-Type":"application/json"}}))}getVoiceSettings(){return a(this.http.get(`${this.baseUrl}/settings`))}saveTtsProvider(e){return a(this.http.post(`${this.baseUrl}/settings/tts-provider`,{provider:e}))}saveElevenLabsKey(e){return a(this.http.post(`${this.baseUrl}/settings/elevenlabs-key`,{apiKey:e}))}testElevenLabsApiKey(){return a(this.http.post(`${this.baseUrl}/settings/test-elevenlabs-key`,{}))}saveVoiceConfig(e){return a(this.http.post(`${this.baseUrl}/settings/voice-config`,{elevenLabsModelId:e.elevenLabsModelId,elevenLabsVoiceId:e.elevenLabsVoiceId}))}static \u0275fac=function(o){return new(o||s)};static \u0275prov=b({token:s,factory:s.\u0275fac,providedIn:"root"})}return s})();var Y=(()=>{class s{voice_AS=h(I);settings_AS=h(P);fetchQaEnabledFlag(){return m(this,null,function*(){try{return(yield this.voice_AS.fetchVoiceNotesQaSettings()).qaEnabled===!0}catch{return!1}})}loadSttQaSettingsPanelState(){return m(this,null,function*(){let e=yield this.voice_AS.fetchVoiceNotesQaSettings(),o=yield this.settings_AS.getSection(A.llmProviders),i=L.parseLlmSettingsSectionForUi(o),f=(e.providerName??"").trim(),r=[],c="";if(f.length>0){let d=yield this.fetchLlmModelsListForSttQa(f);r=[...d.models],c=d.errorMessage;let l=(e.modelName??"").trim();l.length>0&&!r.includes(l)&&(r=[l,...r])}return{qa:e,llmProviderSelectOptions:i.llmProviderSelectOptions,defaultLlmProvider:i.defaultLlmProvider,defaultLlmModel:i.defaultLlmModel,qaModelsForProvider:r,qaModelsListFetchError:c}})}fetchLlmModelsListForSttQa(e){return m(this,null,function*(){let o=e.trim();if(!o.length)return{models:[],errorMessage:""};try{let i=yield this.settings_AS.postListLlmModels({providerId:o}),f=i.models??[],r=typeof i.error=="string"?i.error.trim():"",c=i.success===!1;return f.length>0?{models:f,errorMessage:c?r.length>0?r:"Model list request failed.":""}:c?{models:[],errorMessage:r.length>0?r:"Model list request failed."}:{models:[],errorMessage:r}}catch(i){let f=i instanceof Error?i.message:String(i);return{models:[],errorMessage:f}}})}fetchLlmModelIdsForProvider(e){return m(this,null,function*(){return(yield this.fetchLlmModelsListForSttQa(e)).models})}normalizeConfusionMapEntries(e){return e.map(o=>({from:String(o.from).trim(),to:String(o.to).trim()})).filter(o=>o.from.length>0||o.to.length>0)}saveVoiceNotesQaSettings(e){return m(this,null,function*(){yield this.voice_AS.saveVoiceNotesQaSettings(e)})}fetchVoiceNotesPoc(){return this.voice_AS.fetchVoiceNotesPoc()}saveVoiceNotesPoc(e){return this.voice_AS.saveVoiceNotesPoc(e)}transcribeVoiceChunk(e){return this.voice_AS.transcribeVoiceChunk(e)}getTtsMessageAudioUrl(e){return this.voice_AS.getTtsMessageAudioUrl(e)}getOrCreateTtsMessageAudio(e){return this.voice_AS.getOrCreateTtsMessageAudio(e)}static \u0275fac=function(o){return new(o||s)};static \u0275prov=b({token:s,factory:s.\u0275fac,providedIn:"root"})}return s})();export{y as a,I as b,Y as c};
|
|
2
|
-
//# sourceMappingURL=chunk-MZLFEWAN.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["src/app/_collections/settings/read-llm-cloud-buckets-from-section-response.util.ts", "src/app/_collections/settings/parse-llm-settings-section-for-ui.util.ts", "src/app/_modules/dev/_modules/poc/_modules/voice-notes-poc/_services/voice-notes-poc.api-service.ts", "src/app/_modules/dev/_modules/poc/_modules/voice-notes-poc/_services/vnp-stt-qa-ui.data-service.ts"],
|
|
4
|
-
"sourcesContent": ["import { Set_LlmCloudProviderBucketForm_Interface } from '../../_modules/config/_modules/settings/_models/interfaces/llm-providers/set-llm-cloud-provider-bucket-form.interface';\n\n/**\n * Cloud LLM bucket kiolvasó util – statikus metódusokkal.\n */\nexport class ReadLlmCloudBucketsFromSectionResponse_Util {\n /**\n * Cloud / FDPAI LLM bucket-ek kiolvasása a szerver get-section (llmProviders) válaszból.\n */\n static readLlmCloudBucketsFromSectionResponse(response: Record<string, unknown>): {\n anthropicLlm: Set_LlmCloudProviderBucketForm_Interface;\n googleLlm: Set_LlmCloudProviderBucketForm_Interface;\n deepseekLlm: Set_LlmCloudProviderBucketForm_Interface;\n fdpaiLlm: Set_LlmCloudProviderBucketForm_Interface;\n } {\n return {\n anthropicLlm: readLlmCloudBucketFromUnknown(response.anthropicSettings, { includeBaseUrl: false }),\n googleLlm: readLlmCloudBucketFromUnknown(response.googleSettings, { includeBaseUrl: false }),\n deepseekLlm: readLlmCloudBucketFromUnknown(response.deepseekSettings, { includeBaseUrl: false }),\n fdpaiLlm: readLlmCloudBucketFromUnknown(response.fdpaiSettings, { includeBaseUrl: true }),\n };\n }\n}\n\n/**\n * GET settings section válasz egy provider bucket-jének kiolvasása (cloud LLM, FDPAI baseUrl-lel).\n */\nfunction readLlmCloudBucketFromUnknown(\n raw: unknown,\n options: { includeBaseUrl: boolean },\n): Set_LlmCloudProviderBucketForm_Interface {\n if (raw == null || typeof raw !== 'object' || Array.isArray(raw)) {\n return {\n enabled: false,\n defaultModel: '',\n baseUrl: '',\n apiKey: '',\n apiKeyMasked: '',\n };\n }\n const defaultModel: unknown = Reflect.get(raw, 'defaultModel');\n const apiKeyMasked: unknown = Reflect.get(raw, 'apiKeyMasked');\n const baseUrlRaw: unknown = Reflect.get(raw, 'baseUrl');\n return {\n enabled: Reflect.get(raw, 'enabled') === true,\n defaultModel: typeof defaultModel === 'string' ? defaultModel : '',\n baseUrl: options.includeBaseUrl && typeof baseUrlRaw === 'string' ? baseUrlRaw : '',\n apiKey: '',\n apiKeyMasked: typeof apiKeyMasked === 'string' ? apiKeyMasked : '',\n };\n}\n", "import { CCAP_LlmProviderSelectOption_Interface } from '../../_models/interfaces/settings/ccap-llm-provider-select-option.interface';\nimport { CCAP_CustomLocalOpenAiLlmInstanceId_Util } from './ccap-custom-local-openai-llm-instance-id.util';\nimport { CCAP_LlmProviderDisplayLabelForUi_Util } from './llm-provider-display-label-for-ui.util';\nimport { ReadLlmCloudBucketsFromSectionResponse_Util } from './read-llm-cloud-buckets-from-section-response.util';\n\n/**\n * LLM settings section parse util – statikus metódusokkal.\n */\nexport class ParseLlmSettingsSectionForUi_Util {\n /**\n * LLM settings get-section válasz feldolgozása: engedélyezett provider id-k + globál default provider/modell.\n * Logika igazodik a Set_LlmProviders_DataService doLoad metódusához (voice overlay, voice-notes POC).\n */\n static parseLlmSettingsSectionForUi(response: Record<string, unknown>): {\n enabledLlmProviderIds: string[];\n llmProviderSelectOptions: CCAP_LlmProviderSelectOption_Interface[];\n defaultLlmProvider: string;\n defaultLlmModel: string;\n } {\n const oai: unknown = response.openAiSettings;\n let openAiEnabled: boolean = false;\n let openaiModel: string = 'gpt-4o';\n if (oai != null && typeof oai === 'object' && !Array.isArray(oai)) {\n openAiEnabled = Reflect.get(oai, 'enabled') === true;\n const dm: unknown = Reflect.get(oai, 'defaultModel');\n if (typeof dm === 'string') {\n openaiModel = dm;\n }\n }\n\n const localAiRaw: unknown[] = Array.isArray(response.localAiSettings)\n ? response.localAiSettings\n : [];\n type LocalEntry = { id: string; model: string; label: string; baseUrl: string; enabled: boolean };\n const localAiEntries: LocalEntry[] = localAiRaw\n .filter((item: unknown): item is Record<string, unknown> =>\n item != null && typeof item === 'object' && !Array.isArray(item),\n )\n .map((item: Record<string, unknown>): LocalEntry | null => {\n const key: string = typeof item.key === 'string' ? item.key.trim() : '';\n if (!key.length) {\n return null;\n }\n const name: string = typeof item.name === 'string' ? item.name : '';\n const id: string = CCAP_CustomLocalOpenAiLlmInstanceId_Util.build({ localAiKey: key });\n const label: string = name.trim().length > 0 ? name.trim() : 'Local AI';\n const rowEnabled: boolean = item.enabled !== false;\n return {\n id: id,\n baseUrl: (typeof item.baseUrl === 'string' ? item.baseUrl : '').trim(),\n model: (typeof item.defaultModel === 'string' ? item.defaultModel : '').trim(),\n label: label,\n enabled: rowEnabled,\n };\n })\n .filter((row: LocalEntry | null): row is LocalEntry => row != null);\n\n const finalLocalAi: LocalEntry[] = localAiEntries;\n\n const clouds = ReadLlmCloudBucketsFromSectionResponse_Util.readLlmCloudBucketsFromSectionResponse(response);\n\n const enabledLlmProviderIds: string[] = [];\n if (openAiEnabled) enabledLlmProviderIds.push('open-ai');\n if (clouds.anthropicLlm.enabled) enabledLlmProviderIds.push('anthropic');\n if (clouds.googleLlm.enabled) enabledLlmProviderIds.push('google');\n if (clouds.deepseekLlm.enabled) enabledLlmProviderIds.push('deepseek');\n if (clouds.fdpaiLlm.enabled) enabledLlmProviderIds.push('fdp-ai');\n for (const entry of finalLocalAi) {\n if (entry.enabled) enabledLlmProviderIds.push(entry.id);\n }\n if (enabledLlmProviderIds.length === 0) enabledLlmProviderIds.push('open-ai');\n\n const localRowsForLabel: { id: string; label: string }[] = finalLocalAi.map(\n (e: LocalEntry): { id: string; label: string } => ({ id: e.id, label: e.label }),\n );\n const llmProviderSelectOptions: CCAP_LlmProviderSelectOption_Interface[] = enabledLlmProviderIds.map(\n (pid: string): CCAP_LlmProviderSelectOption_Interface => ({\n value: pid,\n label: CCAP_LlmProviderDisplayLabelForUi_Util.resolve(pid, localRowsForLabel),\n }),\n );\n\n const defaultLlmProvider: string = typeof response.defaultLlmProvider === 'string'\n ? response.defaultLlmProvider\n : 'open-ai';\n\n let defaultLlmModel: string = '';\n if (defaultLlmProvider === 'open-ai') {\n defaultLlmModel = openaiModel;\n } else if (defaultLlmProvider === 'anthropic') {\n defaultLlmModel = clouds.anthropicLlm.defaultModel;\n } else if (defaultLlmProvider === 'google') {\n defaultLlmModel = clouds.googleLlm.defaultModel;\n } else if (defaultLlmProvider === 'deepseek') {\n defaultLlmModel = clouds.deepseekLlm.defaultModel;\n } else if (defaultLlmProvider === 'fdp-ai') {\n defaultLlmModel = clouds.fdpaiLlm.defaultModel;\n } else {\n const matchEntry: LocalEntry | undefined = finalLocalAi.find(\n (e: LocalEntry): boolean => e.id === defaultLlmProvider,\n );\n if (matchEntry) defaultLlmModel = matchEntry.model;\n }\n\n return {\n enabledLlmProviderIds: enabledLlmProviderIds,\n llmProviderSelectOptions: llmProviderSelectOptions,\n defaultLlmProvider: defaultLlmProvider.trim(),\n defaultLlmModel: defaultLlmModel.trim(),\n };\n }\n}\n", "import { inject, Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\n\nimport { firstValueFrom } from 'rxjs';\n\nimport { environment } from '../../../../../../../../environments/environment';\nimport { CCAP_VoiceNotesPoc_Response } from '../../../../../../../_models/interfaces/voice/voice-notes/ccap-voice-notes-poc-response.interface';\nimport { CCAP_VoiceNotesPocSaveBody_Request } from '../../../../../../../_models/interfaces/voice/voice-notes/ccap-voice-notes-poc-save-body.interface';\nimport {\n CCAP_Transcribe_Response,\n CCAP_TranscribeSuccess_Response,\n CCAP_TranscribeNonSpeech_Response,\n} from '../../../../../../../_models/interfaces/voice/transcribe/ccap-transcribe-response.interface';\nimport {\n Voc_SttQaConfusionMapEntry_Response,\n Voc_SttQaInput_Response,\n} from '../../../../../../../_models/server-index';\nimport { CCAP_VoiceNotesQaSettings_Response } from '../../../../../../../_models/interfaces/voice/voice-notes/ccap-voice-notes-qa-settings-response.interface';\nimport { CCAP_VoiceNotesQaSettingsSaveBody_Request } from '../../../../../../../_models/interfaces/voice/voice-notes/ccap-voice-notes-qa-settings-save-body.interface';\nimport { CCAP_VoiceSettings_Response } from '../../../../../../../_models/interfaces/voice/ccap-voice-settings-response.interface';\nimport { CCAP_TestElevenLabsApiKey_Response } from '../../../../../../../_models/interfaces/voice/transcribe/ccap-test-elevenlabs-api-key-response.interface';\n\n/**\n * Voice API service.\n * GET/PUT POC note, POST transcribe, POST TTS speech, GET/POST voice settings.\n */\n@Injectable({ providedIn: 'root' })\nexport class VoiceNotesPoc_ApiService {\n\n private readonly baseUrl: string = `${environment.api.baseUrl}/voice`;\n\n private readonly http: HttpClient = inject(HttpClient);\n\n /**\n * POC jegyzet lekérése (GET /voice/poc/get-notes; a szerver voice.controller endpoint-ja).\n */\n fetchVoiceNotesPoc(): Promise<CCAP_VoiceNotesPoc_Response> {\n return firstValueFrom(\n this.http.get<CCAP_VoiceNotesPoc_Response>(`${this.baseUrl}/poc/get-notes`),\n );\n }\n\n /**\n * STT QA beállítások lekérése (GET /voice/notes/qa-settings): system prompt, user prompt sablon, confusion map.\n */\n fetchVoiceNotesQaSettings(): Promise<CCAP_VoiceNotesQaSettings_Response> {\n return firstValueFrom(\n this.http.get<CCAP_VoiceNotesQaSettings_Response>(`${this.baseUrl}/notes/qa-settings`),\n );\n }\n\n /**\n * STT QA beállítások mentése (PUT /voice/notes/qa-settings): confusion map + opcionális provider/modell.\n * Explicit JSON header, hogy a szerver mindig JSON-ként dolgozza a body-t.\n */\n saveVoiceNotesQaSettings(\n body: CCAP_VoiceNotesQaSettingsSaveBody_Request,\n ): Promise<{\n ok: boolean;\n confusionMap?: Voc_SttQaConfusionMapEntry_Response[];\n providerName?: string;\n modelName?: string;\n }> {\n return firstValueFrom(\n this.http.put<{\n ok: boolean;\n confusionMap?: Voc_SttQaConfusionMapEntry_Response[];\n providerName?: string;\n modelName?: string;\n }>(`${this.baseUrl}/notes/qa-settings`, body, {\n headers: { 'Content-Type': 'application/json' },\n }),\n );\n }\n\n /**\n * POC jegyzet mentése (PUT /voice/notes/poc).\n */\n saveVoiceNotesPoc(body: CCAP_VoiceNotesPocSaveBody_Request): Promise<{ ok?: boolean }> {\n return firstValueFrom(\n this.http.put<{ ok?: boolean }>(`${this.baseUrl}/notes/poc`, body),\n );\n }\n\n /**\n * Nyers audio feltöltése, STT + opcionális QA (POST /voice/notes/transcribe).\n * Raw body = blob; headers Content-Type, Filename (ASCII); query qa, skip_classification, note_context.\n * Megjegyzés: XMLHttpRequest header érték csak ISO-8859-1 — a jegyzet kontextus (UTF-8, pl. magyar)\n * query param `note_context`-ben megy (`encodeURIComponent`), nem headerben.\n */\n transcribeVoiceChunk(params: {\n blob: Blob;\n mimeType: string;\n filename: string;\n qaEnabled?: boolean;\n noteContext?: string;\n skipClassification?: boolean;\n confidenceThreshold?: number;\n }): Promise<CCAP_Transcribe_Response> {\n const queryParams: Record<string, string> = {\n qa: params.qaEnabled === true ? '1' : '0',\n skip_classification: params.skipClassification !== false ? 'true' : 'false',\n };\n if (params.confidenceThreshold !== undefined) {\n queryParams.confidence_threshold = String(params.confidenceThreshold);\n }\n if (params.noteContext !== undefined) {\n queryParams.note_context = params.noteContext;\n }\n const query: string = Object.keys(queryParams)\n .map((k: string): string => `${encodeURIComponent(k)}=${encodeURIComponent(queryParams[k])}`)\n .join('&');\n const url: string = `${this.baseUrl}/notes/transcribe${query ? `?${query}` : ''}`;\n const headers: Record<string, string> = {\n 'Content-Type': params.mimeType,\n 'Filename': params.filename,\n };\n return firstValueFrom(\n this.http.post<CCAP_Transcribe_Response>(url, params.blob, {\n headers: headers,\n }),\n );\n }\n\n /**\n * TTS speech generálás (POST /voice/tts/speech).\n * Jelenleg csak ElevenLabs sync (200 + blob); 202/task flow nincs.\n */\n generateTtsSpeechBlob(params: { text: string }): Promise<Blob> {\n return firstValueFrom(\n this.http.post(`${this.baseUrl}/tts/speech`, { input: params.text }, {\n responseType: 'blob',\n }),\n );\n }\n\n /**\n * TTS message audio URL (GET /voice/tts/message-audio/:messageKey).\n * A kliens ezt használja audio src-ként, ha hasTtsAudio true.\n * Üres messageKey esetén ne adjunk URL-t (ne hívjuk a szervert messageKey nélkül).\n */\n getTtsMessageAudioUrl(messageKey: string): string {\n const key: string = typeof messageKey === 'string' ? messageKey.trim() : '';\n if (!key) {\n return '';\n }\n return `${this.baseUrl}/tts/message-audio/${encodeURIComponent(key)}`;\n }\n\n /**\n * TTS message audio get-or-create (POST /voice/tts/message-audio).\n * Visszaadja a blob-ot (cache-ből vagy új generálásból); mindig 200 + blob.\n */\n getOrCreateTtsMessageAudio(params: {\n sessionId: string;\n role: string;\n content: string;\n timestamp: string;\n }): Promise<Blob> {\n return firstValueFrom(\n this.http.post(\n `${this.baseUrl}/tts/message-audio`,\n {\n sessionId: params.sessionId,\n role: params.role,\n content: params.content,\n timestamp: params.timestamp,\n },\n {\n responseType: 'blob',\n headers: { 'Content-Type': 'application/json' },\n },\n ),\n );\n }\n\n /**\n * Voice beállítások lekérése (GET /voice/settings).\n */\n getVoiceSettings(): Promise<CCAP_VoiceSettings_Response> {\n return firstValueFrom(\n this.http.get<CCAP_VoiceSettings_Response>(`${this.baseUrl}/settings`),\n );\n }\n\n /**\n * TTS provider mentése (POST /voice/settings/tts-provider).\n */\n saveTtsProvider(provider: 'fdpai' | 'elevenlabs'): Promise<{ ok: boolean; provider: string }> {\n return firstValueFrom(\n this.http.post<{ ok: boolean; provider: string }>(\n `${this.baseUrl}/settings/tts-provider`,\n { provider: provider },\n ),\n );\n }\n\n /**\n * ElevenLabs API kulcs mentése (POST /voice/settings/elevenlabs-key).\n */\n saveElevenLabsKey(apiKey: string): Promise<{ ok: boolean; maskedKey?: string }> {\n return firstValueFrom(\n this.http.post<{ ok: boolean; maskedKey?: string }>(\n `${this.baseUrl}/settings/elevenlabs-key`,\n { apiKey: apiKey },\n ),\n );\n }\n\n /**\n * ElevenLabs API kulcs tesztelése a tárolt kulccsal (POST /voice/settings/test-elevenlabs-key).\n * Nem küld body-t – a szerver a titkosítva mentett kulcsot használja.\n */\n testElevenLabsApiKey(): Promise<CCAP_TestElevenLabsApiKey_Response> {\n return firstValueFrom(\n this.http.post<CCAP_TestElevenLabsApiKey_Response>(\n `${this.baseUrl}/settings/test-elevenlabs-key`,\n {},\n ),\n );\n }\n\n /**\n * Voice config (ElevenLabs model/voice id) mentése (POST /voice/settings/voice-config).\n */\n saveVoiceConfig(params: {\n elevenLabsModelId?: string;\n elevenLabsVoiceId?: string;\n }): Promise<{\n ok: boolean;\n elevenLabsModelId?: string;\n elevenLabsVoiceId?: string;\n }> {\n return firstValueFrom(\n this.http.post<{\n ok: boolean;\n elevenLabsModelId?: string;\n elevenLabsVoiceId?: string;\n }>(`${this.baseUrl}/settings/voice-config`, {\n elevenLabsModelId: params.elevenLabsModelId,\n elevenLabsVoiceId: params.elevenLabsVoiceId,\n }),\n );\n }\n}\n", "import { inject, Injectable } from '@angular/core';\n\nimport { SC_Type } from '@server-enums';\nimport { ParseLlmSettingsSectionForUi_Util } from '../../../../../../../_collections/settings/parse-llm-settings-section-for-ui.util';\nimport { Voc_SttQaConfusionMapEntry_Response } from '../../../../../../../_models/server-index';\nimport { CCAP_VoiceNotesQaSettings_Response } from '../../../../../../../_models/interfaces/voice/voice-notes/ccap-voice-notes-qa-settings-response.interface';\nimport { CCAP_VoiceNotesQaSettingsSaveBody_Request } from '../../../../../../../_models/interfaces/voice/voice-notes/ccap-voice-notes-qa-settings-save-body.interface';\nimport { CCAP_VoiceNotesPoc_Response } from '../../../../../../../_models/interfaces/voice/voice-notes/ccap-voice-notes-poc-response.interface';\nimport { CCAP_VoiceNotesPocSaveBody_Request } from '../../../../../../../_models/interfaces/voice/voice-notes/ccap-voice-notes-poc-save-body.interface';\nimport { CCAP_ListAiModels_Response } from '../../../../../../../_models/interfaces/settings/response/ccap-list-ai-models-response.interface';\nimport { CCAP_Transcribe_Response } from '../../../../../../../_models/interfaces/voice/transcribe/ccap-transcribe-response.interface';\nimport { CCAP_VoiceSttQaUiLoadResult_Interface } from '../../../../../../../_models/interfaces/voice/ccap-voice-stt-qa-ui-load-result.interface';\nimport { Settings_ApiService } from '../../../../../../config/_modules/settings/_services/settings.api-service';\nimport { VoiceNotesPoc_ApiService } from './voice-notes-poc.api-service';\n\n/**\n * Voice kliens SSOT: STT chunk, QA panel állapot, TTS message audio URL/blob (komponensek nem hívják közvetlenül a Voice ApiService-t).\n */\n@Injectable({ providedIn: 'root' })\nexport class VNP_SttQaUi_DataService {\n\n private readonly voice_AS: VoiceNotesPoc_ApiService = inject(VoiceNotesPoc_ApiService);\n private readonly settings_AS: Settings_ApiService = inject(Settings_ApiService);\n\n /**\n * Szerverről: QA engedélyezett-e (egyszeri flag betöltéshez).\n */\n async fetchQaEnabledFlag(): Promise<boolean> {\n try {\n const res: CCAP_VoiceNotesQaSettings_Response =\n await this.voice_AS.fetchVoiceNotesQaSettings();\n return res.qaEnabled === true;\n } catch {\n return false;\n }\n }\n\n /**\n * QA beállítások panelhez: GET qa-settings + LLM szekció + opcionális modell lista.\n */\n async loadSttQaSettingsPanelState(): Promise<CCAP_VoiceSttQaUiLoadResult_Interface> {\n const qa: CCAP_VoiceNotesQaSettings_Response =\n await this.voice_AS.fetchVoiceNotesQaSettings();\n const llmSection: Record<string, unknown> = await this.settings_AS.getSection(\n SC_Type.llmProviders,\n );\n const snap = ParseLlmSettingsSectionForUi_Util.parseLlmSettingsSectionForUi(llmSection);\n const providerTrimmed: string = (qa.providerName ?? '').trim();\n let qaModelsForProvider: string[] = [];\n let qaModelsListFetchError: string = '';\n if (providerTrimmed.length > 0) {\n const fetchRes = await this.fetchLlmModelsListForSttQa(providerTrimmed);\n qaModelsForProvider = [...fetchRes.models];\n qaModelsListFetchError = fetchRes.errorMessage;\n const savedModel: string = (qa.modelName ?? '').trim();\n if (savedModel.length > 0 && !qaModelsForProvider.includes(savedModel)) {\n qaModelsForProvider = [savedModel, ...qaModelsForProvider];\n }\n }\n return {\n qa: qa,\n llmProviderSelectOptions: snap.llmProviderSelectOptions,\n defaultLlmProvider: snap.defaultLlmProvider,\n defaultLlmModel: snap.defaultLlmModel,\n qaModelsForProvider: qaModelsForProvider,\n qaModelsListFetchError: qaModelsListFetchError,\n };\n }\n\n /**\n * Egy providerhez modell lista + hiba szöveg (settings list-llm-models); cloud provider esetén üres lista és error.\n */\n async fetchLlmModelsListForSttQa(providerId: string): Promise<{\n models: string[];\n errorMessage: string;\n }> {\n const id: string = providerId.trim();\n if (!id.length) {\n return { models: [], errorMessage: '' };\n }\n try {\n const res: CCAP_ListAiModels_Response = await this.settings_AS.postListLlmModels({\n providerId: id,\n });\n const models: string[] = res.models ?? [];\n const errRaw: string = typeof res.error === 'string' ? res.error.trim() : '';\n const isExplicitFailure: boolean = res.success === false;\n if (models.length > 0) {\n return {\n models: models,\n errorMessage: isExplicitFailure ? (errRaw.length > 0 ? errRaw : 'Model list request failed.') : '',\n };\n }\n if (isExplicitFailure) {\n return {\n models: [],\n errorMessage: errRaw.length > 0 ? errRaw : 'Model list request failed.',\n };\n }\n return { models: [], errorMessage: errRaw };\n } catch (error: unknown) {\n const message: string = error instanceof Error ? error.message : String(error);\n return { models: [], errorMessage: message };\n }\n }\n\n /**\n * Csak a modell id-k (legacy hívók / egyszerű UI); hiba esetén üres tömb.\n */\n async fetchLlmModelIdsForProvider(providerId: string): Promise<string[]> {\n const out = await this.fetchLlmModelsListForSttQa(providerId);\n return out.models;\n }\n\n /**\n * Confusion map mentés előtti normalizálás (trim + üres sorok megtartása opcionálisan kiszűrve).\n */\n normalizeConfusionMapEntries(\n list: Voc_SttQaConfusionMapEntry_Response[],\n ): Voc_SttQaConfusionMapEntry_Response[] {\n return list\n .map((e: Voc_SttQaConfusionMapEntry_Response): Voc_SttQaConfusionMapEntry_Response => ({\n from: String(e.from).trim(),\n to: String(e.to).trim(),\n }))\n .filter((e: Voc_SttQaConfusionMapEntry_Response): boolean =>\n e.from.length > 0 || e.to.length > 0);\n }\n\n /**\n * PUT /voice/notes/qa-settings.\n */\n async saveVoiceNotesQaSettings(\n body: CCAP_VoiceNotesQaSettingsSaveBody_Request,\n ): Promise<void> {\n await this.voice_AS.saveVoiceNotesQaSettings(body);\n }\n\n /**\n * Voice Notes POC jegyzet GET.\n */\n fetchVoiceNotesPoc(): Promise<CCAP_VoiceNotesPoc_Response> {\n return this.voice_AS.fetchVoiceNotesPoc();\n }\n\n /**\n * Voice Notes POC jegyzet PUT.\n */\n saveVoiceNotesPoc(body: CCAP_VoiceNotesPocSaveBody_Request): Promise<{ ok?: boolean }> {\n return this.voice_AS.saveVoiceNotesPoc(body);\n }\n\n /**\n * Hang chunk STT (+ opcionális QA) — POST /voice/notes/transcribe.\n */\n transcribeVoiceChunk(params: {\n blob: Blob;\n mimeType: string;\n filename: string;\n qaEnabled?: boolean;\n noteContext?: string;\n skipClassification?: boolean;\n confidenceThreshold?: number;\n }): Promise<CCAP_Transcribe_Response> {\n return this.voice_AS.transcribeVoiceChunk(params);\n }\n\n /**\n * TTS message audio URL (üres key → üres string).\n */\n getTtsMessageAudioUrl(messageKey: string): string {\n return this.voice_AS.getTtsMessageAudioUrl(messageKey);\n }\n\n /**\n * TTS message audio get-or-create (blob).\n */\n getOrCreateTtsMessageAudio(params: {\n sessionId: string;\n role: string;\n content: string;\n timestamp: string;\n }): Promise<Blob> {\n return this.voice_AS.getOrCreateTtsMessageAudio(params);\n }\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["ReadLlmCloudBucketsFromSectionResponse_Util", "readLlmCloudBucketsFromSectionResponse", "response", "anthropicLlm", "readLlmCloudBucketFromUnknown", "anthropicSettings", "includeBaseUrl", "googleLlm", "googleSettings", "deepseekLlm", "deepseekSettings", "fdpaiLlm", "fdpaiSettings", "raw", "options", "Array", "isArray", "enabled", "defaultModel", "baseUrl", "apiKey", "apiKeyMasked", "Reflect", "get", "baseUrlRaw", "ParseLlmSettingsSectionForUi_Util", "parseLlmSettingsSectionForUi", "response", "oai", "openAiSettings", "openAiEnabled", "openaiModel", "Array", "isArray", "Reflect", "get", "dm", "finalLocalAi", "localAiSettings", "filter", "item", "map", "key", "trim", "length", "name", "id", "CCAP_CustomLocalOpenAiLlmInstanceId_Util", "build", "localAiKey", "label", "rowEnabled", "enabled", "baseUrl", "model", "defaultModel", "row", "clouds", "ReadLlmCloudBucketsFromSectionResponse_Util", "readLlmCloudBucketsFromSectionResponse", "enabledLlmProviderIds", "push", "anthropicLlm", "googleLlm", "deepseekLlm", "fdpaiLlm", "entry", "localRowsForLabel", "e", "llmProviderSelectOptions", "pid", "value", "CCAP_LlmProviderDisplayLabelForUi_Util", "resolve", "defaultLlmProvider", "defaultLlmModel", "matchEntry", "find", "VoiceNotesPoc_ApiService", "baseUrl", "environment", "api", "http", "inject", "HttpClient", "fetchVoiceNotesPoc", "firstValueFrom", "get", "fetchVoiceNotesQaSettings", "saveVoiceNotesQaSettings", "body", "put", "headers", "saveVoiceNotesPoc", "transcribeVoiceChunk", "params", "queryParams", "qa", "qaEnabled", "skip_classification", "skipClassification", "confidenceThreshold", "undefined", "confidence_threshold", "String", "noteContext", "note_context", "query", "Object", "keys", "map", "k", "encodeURIComponent", "join", "url", "mimeType", "filename", "post", "blob", "generateTtsSpeechBlob", "input", "text", "responseType", "getTtsMessageAudioUrl", "messageKey", "key", "trim", "getOrCreateTtsMessageAudio", "sessionId", "role", "content", "timestamp", "getVoiceSettings", "saveTtsProvider", "provider", "saveElevenLabsKey", "apiKey", "testElevenLabsApiKey", "saveVoiceConfig", "elevenLabsModelId", "elevenLabsVoiceId", "factory", "\u0275fac", "providedIn", "VNP_SttQaUi_DataService", "voice_AS", "inject", "VoiceNotesPoc_ApiService", "settings_AS", "Settings_ApiService", "fetchQaEnabledFlag", "__async", "fetchVoiceNotesQaSettings", "qaEnabled", "loadSttQaSettingsPanelState", "qa", "llmSection", "getSection", "SC_Type", "llmProviders", "snap", "ParseLlmSettingsSectionForUi_Util", "parseLlmSettingsSectionForUi", "providerTrimmed", "providerName", "trim", "qaModelsForProvider", "qaModelsListFetchError", "length", "fetchRes", "fetchLlmModelsListForSttQa", "models", "errorMessage", "savedModel", "modelName", "includes", "llmProviderSelectOptions", "defaultLlmProvider", "defaultLlmModel", "providerId", "id", "res", "postListLlmModels", "errRaw", "error", "isExplicitFailure", "success", "message", "Error", "String", "fetchLlmModelIdsForProvider", "normalizeConfusionMapEntries", "list", "map", "e", "from", "to", "filter", "saveVoiceNotesQaSettings", "body", "fetchVoiceNotesPoc", "saveVoiceNotesPoc", "transcribeVoiceChunk", "params", "getTtsMessageAudioUrl", "messageKey", "getOrCreateTtsMessageAudio", "factory", "\u0275fac", "providedIn"]
|
|
7
|
-
}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{p as C}from"./chunk-SLSTIBOT.js";import{aa as f,h as p,k as h,y as m}from"./chunk-TBMJSIBB.js";var a=function(o){return o.stopped="stopped",o.standby="standby",o.running="running",o}(a||{});var k={navigator_unavailable:"A hangfelv\xE9tel nem el\xE9rhet\u0151: a b\xF6ng\xE9sz\u0151 k\xF6rnyezet nem t\xE1mogatja a navigator API-t.",media_devices_unavailable:"A hangfelv\xE9tel nem el\xE9rhet\u0151: a b\xF6ng\xE9sz\u0151 ezen az oldalon nem ad hozz\xE1f\xE9r\xE9st a mikrofonhoz.",secure_context_required:"A hangfelv\xE9tel ezen az oldalon nem el\xE9rhet\u0151: a b\xF6ng\xE9sz\u0151 csak biztons\xE1gos kapcsolatban (HTTPS vagy localhost) enged\xE9lyezi a mikrofont."},v={media_devices_unavailable:"A mikrofonhoz haszn\xE1ld az alkalmaz\xE1st HTTPS c\xEDmen (pl. https://localhost:39051) vagy localhost-on.",secure_context_required:"A mikrofonhoz haszn\xE1ld az alkalmaz\xE1st HTTPS c\xEDmen (pl. https://localhost:39051) vagy localhost-on."},d=class{static wrapGetUserMediaError(s){if(s instanceof Error&&"code"in s&&typeof s.code=="string"&&s.code.startsWith("CCAP_"))return s;let e=s instanceof DOMException||s instanceof Error?s.name:"UnknownError",t,i;switch(e){case"NotAllowedError":t="CCAP_MIC_PERMISSION_DENIED",i="Microphone access denied by user or browser policy";break;case"NotFoundError":t="CCAP_MIC_NOT_FOUND",i="No microphone device found on this device";break;case"NotReadableError":t="CCAP_MIC_NOT_READABLE",i="Microphone hardware error or device already in use by another application";break;case"OverconstrainedError":t="CCAP_MIC_OVERCONSTRAINED",i="Microphone does not support the requested audio constraints";break;case"AbortError":t="CCAP_MIC_ABORTED",i="Microphone access request was aborted by the system";break;case"SecurityError":t="CCAP_MIC_SECURITY_ERROR",i="Microphone access blocked by document security policy (Permissions-Policy / iframe)";break;default:t="CCAP_MIC_UNKNOWN_ERROR",i=`getUserMedia failed with ${e}`;break}let n=new Error(i);return n.code=t,n.cause=s,n}static getGetUserMediaErrorMessage(s){switch(s instanceof DOMException||s instanceof Error?s.name:""){case"NotAllowedError":return"A mikrofon haszn\xE1lata nem enged\xE9lyezett: a b\xF6ng\xE9sz\u0151 vagy a felhaszn\xE1l\xF3 megtagadta a hozz\xE1f\xE9r\xE9st.";case"NotFoundError":return"Nem tal\xE1lhat\xF3 mikrofon ezen az eszk\xF6z\xF6n.";case"NotReadableError":return"A mikrofon nem olvashat\xF3: hardverhiba vagy egy m\xE1sik alkalmaz\xE1s haszn\xE1lja.";case"OverconstrainedError":return"A mikrofon nem t\xE1mogatja a k\xE9rt audio be\xE1ll\xEDt\xE1sokat.";case"AbortError":return"A mikrofon-hozz\xE1f\xE9r\xE9si k\xE9r\xE9s megszakadt.";case"SecurityError":return"A mikrofon-hozz\xE1f\xE9r\xE9st a biztons\xE1gi szab\xE1lyzat (Permissions-Policy / iframe) blokkolta.";default:return"A mikrofon el\xE9r\xE9se sikertelen (ismeretlen hiba)."}}static getGetUserMediaErrorHint(s){switch(s instanceof DOMException||s instanceof Error?s.name:""){case"NotAllowedError":return"Enged\xE9lyezd a mikrofont a b\xF6ng\xE9sz\u0151 c\xEDmsor\xE1ban (lakat ikon \u2192 Mikrofon \u2192 Enged\xE9lyez\xE9s), majd pr\xF3b\xE1ld \xFAjra. Androidon: Be\xE1ll\xEDt\xE1sok \u2192 Alkalmaz\xE1sok \u2192 Chrome \u2192 Enged\xE9lyek \u2192 Mikrofon.";case"NotReadableError":return"Z\xE1rd be a mikrofont haszn\xE1l\xF3 m\xE1sik alkalmaz\xE1st (pl. vide\xF3h\xEDv\xE1s, diktafon), majd pr\xF3b\xE1ld \xFAjra.";case"SecurityError":return'Ha az alkalmaz\xE1s iframe-ben fut, az iframe-nek "allow=microphone" attrib\xFAtumra van sz\xFCks\xE9ge.';default:return""}}static getMediaRecordingAvailability(){return typeof navigator>"u"?{supported:!1,reason:"navigator_unavailable"}:typeof window<"u"&&window.isSecureContext===!1?{supported:!1,reason:"secure_context_required"}:navigator.mediaDevices==null?{supported:!1,reason:"media_devices_unavailable"}:{supported:!0}}static getMediaUnavailableReportMessage(s){return`Media recording not available (reason: ${s}). Use HTTPS or localhost for microphone access.`}static getMediaUnavailableHint(s){return v[s]??""}static getMediaUnavailableMessage(s){return k[s]??"A hangfelv\xE9tel nem el\xE9rhet\u0151 ezen az oldalon."}};var r=p(C());var A=["audio/webm;codecs=opus","audio/webm","audio/ogg;codecs=opus","audio/ogg","audio/mp4"],z=(()=>{class o{volumeGate=.05;silenceTimeLimitMs=5*r.second;timesliceMs=5*r.second;segmentMaxChunks=6;segmentSoftFlushMinChunks=4;getUserMediaTimeoutMs=15*r.second;state_$=f(a.stopped);mediaStream=null;mediaRecorder=null;audioContext=null;analyser=null;audioSourceNode=null;volumeAnimationId=null;chunkIndex=0;chunks=[];isRestartingForFlush=!1;selectedMime="";onChunkCb=null;onVolumeCb=null;onErrorCb=null;deviceChangeHandler=null;silenceStartTime=null;setOnChunk(e){this.onChunkCb=e}setOnVolume(e){this.onVolumeCb=e}setOnError(e){this.onErrorCb=e}selectMime(){for(let e of A)if(MediaRecorder.isTypeSupported(e))return e;return"audio/webm"}getExtension(){return this.selectedMime.startsWith("audio/webm")?"webm":this.selectedMime.startsWith("audio/ogg")?"ogg":this.selectedMime.startsWith("audio/mp4")?"mp4":"webm"}startListening(){return h(this,null,function*(){if(this.state_$()===a.stopped)try{let e=d.getMediaRecordingAvailability();if(!e.supported){let n=`Media recording not available (reason: ${e.reason??"unknown"})`,l=new Error(n);throw l.code="CCAP_MEDIA_NOT_AVAILABLE",l}let t=null;try{let n=navigator.mediaDevices.getUserMedia({audio:{echoCancellation:!0,noiseSuppression:!0,autoGainControl:!0,channelCount:1}}),l=new Promise((c,g)=>{t=setTimeout(()=>{let u=new Error(`getUserMedia timed out after ${this.getUserMediaTimeoutMs}ms`);u.code="CCAP_MIC_TIMEOUT",g(u)},this.getUserMediaTimeoutMs)});this.mediaStream=yield Promise.race([n,l])}catch(n){throw d.wrapGetUserMediaError(n)}finally{t!==null&&clearTimeout(t)}let i=this.mediaStream.getAudioTracks()[0];i&&(r.DyFM_Log.info("[CCAP] mic track settings",i.getSettings()),i.onended=()=>{r.DyFM_Log.info("[CCAP] mic track ended unexpectedly"),this.stopListening(),this.onErrorCb?.(new Error("Microphone track ended unexpectedly (device disconnected?)"))}),this.registerDeviceChangeListener(),this.selectedMime=this.selectMime(),this.startVolumeLoop(),this.state_$.set(a.standby)}catch(e){throw this.state_$.set(a.stopped),e}})}stopListening(){let e=this.state_$()===a.running;e&&this.stopCapture(!0),this.stopVolumeLoop(),e||this.stopMediaRecorder(),this.silenceStartTime=null,this.unregisterDeviceChangeListener(),this.mediaStream&&(this.mediaStream.getTracks().forEach(t=>t.stop()),this.mediaStream=null),this.state_$.set(a.stopped)}startCapture(){return h(this,null,function*(){try{if(this.mediaStream==null&&(yield this.startListening()),this.mediaStream==null)return;this.silenceStartTime=null,this.chunks=[],this.createAndStartRecorder(),this.state_$.set(a.running)}catch(e){this.stopVolumeLoop(),this.state_$.set(a.stopped),this.onErrorCb?.(e)}})}stopCapture(e=!1,t=!1){if(this.isRestartingForFlush=!1,!(this.mediaRecorder==null||this.state_$()!==a.running)){try{this.mediaRecorder.stop()}catch(i){r.DyFM_Log.info("[CCAP] mediaRecorder.stop() failed (likely already inactive)",i),this.mediaRecorder=null,this.flushChunksAsSegment(e),this.state_$.set(this.mediaStream?a.standby:a.stopped);return}if(t){this.mediaRecorder=null,this.flushChunksAsSegment(e),this.state_$.set(this.mediaStream?a.standby:a.stopped);return}this.mediaRecorder.onstop=()=>{this.mediaRecorder=null,this.flushChunksAsSegment(e),this.state_$.set(this.mediaStream?a.standby:a.stopped)}}}createAndStartRecorder(){this.mediaStream&&(this.mediaRecorder=new MediaRecorder(this.mediaStream,{mimeType:this.selectedMime,audioBitsPerSecond:128e3}),this.mediaRecorder.ondataavailable=e=>{if(e.data.size>0&&this.chunks.push(e.data),this.state_$()!==a.running||this.isRestartingForFlush)return;let t=this.chunks.length>=this.segmentMaxChunks,i=this.chunks.length>=this.segmentSoftFlushMinChunks&&this.silenceStartTime!==null;(t||i)&&this.restartRecorderForFlush()},this.mediaRecorder.start(this.timesliceMs))}restartRecorderForFlush(){if(!(!this.mediaRecorder||this.mediaRecorder.state==="inactive")){this.isRestartingForFlush=!0,this.silenceStartTime=null,r.DyFM_Log.info("[CCAP] restartRecorderForFlush: stopping current recorder for mid-recording flush"),this.mediaRecorder.onstop=()=>{this.isRestartingForFlush=!1,this.mediaRecorder=null;let e=this.chunks.length;if(this.flushChunksAsSegment(!1),r.DyFM_Log.info(`[CCAP] restartRecorderForFlush: flushed ${e} chunks as segment`),this.state_$()!==a.running||!this.mediaStream){r.DyFM_Log.info("[CCAP] restartRecorderForFlush: not restarting (state changed or no stream)");return}this.createAndStartRecorder(),r.DyFM_Log.info("[CCAP] restartRecorderForFlush: new recorder started for next segment")};try{this.mediaRecorder.stop()}catch{this.isRestartingForFlush=!1,this.mediaRecorder=null,this.flushChunksAsSegment(!1)}}}flushChunksAsSegment(e){if(this.chunks.length===0)return;let t=new Blob(this.chunks,{type:this.selectedMime}),i={mimeType:this.selectedMime,filename:`audio-${Date.now()}.${this.getExtension()}`,chunkIndex:this.chunkIndex++,isFinal:e};this.chunks=[],this.onChunkCb?.(t,i)}startVolumeLoop(){if(this.mediaStream==null||this.onVolumeCb==null)return;this.audioContext=new AudioContext,this.audioContext.state==="suspended"&&this.audioContext.resume().catch(()=>{}),this.audioContext.onstatechange=()=>{let i=this.audioContext?.state??"unknown";r.DyFM_Log.info("[CCAP] AudioContext state changed:",i),i==="suspended"&&this.state_$()!==a.stopped&&this.audioContext?.resume().catch(()=>{})},this.audioSourceNode=this.audioContext.createMediaStreamSource(this.mediaStream),this.analyser=this.audioContext.createAnalyser(),this.analyser.fftSize=2048,this.analyser.smoothingTimeConstant=.8,this.audioSourceNode.connect(this.analyser);let e=new Float32Array(this.analyser.fftSize),t=()=>{if(this.analyser==null||this.onVolumeCb==null)return;this.analyser.getFloatTimeDomainData(e);let i=0;for(let c=0;c<e.length;c++)i+=Math.abs(e[c]);let n=i/e.length;this.onVolumeCb(n);let l=this.state_$();if(l===a.standby&&n>=this.volumeGate){this.startCapture(),this.volumeAnimationId=requestAnimationFrame(t);return}l===a.running&&!this.isRestartingForFlush&&(n<this.volumeGate?this.silenceStartTime===null?this.silenceStartTime=Date.now():Date.now()-this.silenceStartTime>=this.silenceTimeLimitMs&&(this.stopCapture(),this.silenceStartTime=null):this.silenceStartTime=null),this.volumeAnimationId=requestAnimationFrame(t)};t()}stopVolumeLoop(){this.volumeAnimationId!=null&&(cancelAnimationFrame(this.volumeAnimationId),this.volumeAnimationId=null),this.audioSourceNode=null,this.audioContext!=null&&(this.audioContext.onstatechange=null,this.audioContext.close().catch(()=>{}),this.audioContext=null),this.analyser=null}stopMediaRecorder(){if(this.mediaRecorder!=null&&this.mediaRecorder.state!=="inactive"){try{this.mediaRecorder.stop()}catch{}this.mediaRecorder=null}this.chunks=[],this.isRestartingForFlush=!1}registerDeviceChangeListener(){try{this.deviceChangeHandler=()=>{r.DyFM_Log.info("[CCAP] media device change detected")},navigator.mediaDevices.addEventListener("devicechange",this.deviceChangeHandler)}catch{this.deviceChangeHandler=null}}unregisterDeviceChangeListener(){if(this.deviceChangeHandler){try{navigator.mediaDevices.removeEventListener("devicechange",this.deviceChangeHandler)}catch{}this.deviceChangeHandler=null}}static \u0275fac=function(t){return new(t||o)};static \u0275prov=m({token:o,factory:o.\u0275fac,providedIn:"root"})}return o})();export{a,d as b,z as c};
|
|
2
|
-
//# sourceMappingURL=chunk-QPEW5PI4.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["src/app/_enums/ccap-sound-recorder-state.enum.ts", "src/app/_collections/utils/media-recording/media-recording.util.ts", "src/app/_services/control-services/ccap-sound-recorder.control-service.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * Hangfelvétel állapot típusok.\n * Felvételi állapot: stopped = inaktív, standby = figyelés (várakozás beszédre),\n * running = rögzítés aktív.\n */\nexport enum CCAP_SoundRecorderState_State {\n stopped = 'stopped',\n standby = 'standby',\n running = 'running',\n}\n", "import { CCAP_MediaRecordingAvailability_Interface } from './media-recording.util.interface';\n\n/** Reason → felhasználóbarát üzenet (UI inline / tooltip). */\nconst MEDIA_UNAVAILABLE_MESSAGE_MAP: Record<string, string> = {\n navigator_unavailable:\n 'A hangfelvétel nem elérhető: a böngésző környezet nem támogatja a navigator API-t.',\n media_devices_unavailable:\n 'A hangfelvétel nem elérhető: a böngésző ezen az oldalon nem ad hozzáférést a mikrofonhoz.',\n secure_context_required:\n 'A hangfelvétel ezen az oldalon nem elérhető: a böngésző csak biztonságos kapcsolatban ' +\n '(HTTPS vagy localhost) engedélyezi a mikrofont.',\n};\n\n/** Reason esetén megjeleníthető rövid megoldás (HTTPS/localhost), üres ha nincs ilyen. */\nconst MEDIA_UNAVAILABLE_HINT_MAP: Record<string, string> = {\n media_devices_unavailable:\n 'A mikrofonhoz használd az alkalmazást HTTPS címen (pl. https://localhost:39051) vagy localhost-on.',\n secure_context_required:\n 'A mikrofonhoz használd az alkalmazást HTTPS címen (pl. https://localhost:39051) vagy localhost-on.',\n};\n\n/**\n * Media recording util: mikrofon elérhetőség, hibaüzenetek, hint szövegek, getUserMedia hiba-wrapping.\n */\nexport class CCAP_MediaRecording_Util {\n\n/**\n * getUserMedia DOMException / Error → strukturált diagnosztikai Error wrapper-be csomagolás.\n * A böngésző getUserMedia hívása DOMException-t dob (NotAllowedError, NotFoundError stb.),\n * ami gyakran stack nélkül érkezik; ez a wrapper saját stack-et biztosít, egyedi error code-ot\n * ad (CCAP_MIC_*), és az eredetit cause-ként tartja meg a lánc számára.\n */\nstatic wrapGetUserMediaError(err: unknown): Error & { code: string } {\n // Ha az error már CCAP_ kóddal rendelkezik (pl. timeout), közvetlenül visszaadjuk (dupla wrap elkerülése).\n if (\n err instanceof Error\n && 'code' in err\n && typeof (err as Record<string, unknown>).code === 'string'\n && ((err as Record<string, unknown>).code as string).startsWith('CCAP_')\n ) {\n return err as Error & { code: string };\n }\n\n // DOMException.name azonosítja a hiba típusát (W3C MediaDevices spec).\n const name: string = (err instanceof DOMException || err instanceof Error)\n ? err.name\n : 'UnknownError';\n\n let code: string;\n let message: string;\n\n switch (name) {\n case 'NotAllowedError':\n code = 'CCAP_MIC_PERMISSION_DENIED';\n message = 'Microphone access denied by user or browser policy';\n break;\n case 'NotFoundError':\n code = 'CCAP_MIC_NOT_FOUND';\n message = 'No microphone device found on this device';\n break;\n case 'NotReadableError':\n code = 'CCAP_MIC_NOT_READABLE';\n message = 'Microphone hardware error or device already in use by another application';\n break;\n case 'OverconstrainedError':\n code = 'CCAP_MIC_OVERCONSTRAINED';\n message = 'Microphone does not support the requested audio constraints';\n break;\n case 'AbortError':\n code = 'CCAP_MIC_ABORTED';\n message = 'Microphone access request was aborted by the system';\n break;\n case 'SecurityError':\n code = 'CCAP_MIC_SECURITY_ERROR';\n message = 'Microphone access blocked by document security policy (Permissions-Policy / iframe)';\n break;\n default:\n code = 'CCAP_MIC_UNKNOWN_ERROR';\n message = `getUserMedia failed with ${name}`;\n break;\n }\n\n const wrapped: Error & { code: string } = new Error(message) as Error & { code: string };\n wrapped.code = code;\n wrapped.cause = err;\n return wrapped;\n}\n\n/**\n * getUserMedia error name → user-facing üzenet (Hunglish, notification / tooltip).\n * Nem tanácsot ad — leírja, mi történt; hint-et a getGetUserMediaErrorHint adja.\n */\nstatic getGetUserMediaErrorMessage(err: unknown): string {\n const name: string = (err instanceof DOMException || err instanceof Error)\n ? err.name\n : '';\n\n switch (name) {\n case 'NotAllowedError':\n return 'A mikrofon használata nem engedélyezett: a böngésző vagy a felhasználó megtagadta a hozzáférést.';\n case 'NotFoundError':\n return 'Nem található mikrofon ezen az eszközön.';\n case 'NotReadableError':\n return 'A mikrofon nem olvasható: hardverhiba vagy egy másik alkalmazás használja.';\n case 'OverconstrainedError':\n return 'A mikrofon nem támogatja a kért audio beállításokat.';\n case 'AbortError':\n return 'A mikrofon-hozzáférési kérés megszakadt.';\n case 'SecurityError':\n return 'A mikrofon-hozzáférést a biztonsági szabályzat (Permissions-Policy / iframe) blokkolta.';\n default:\n return 'A mikrofon elérése sikertelen (ismeretlen hiba).';\n }\n}\n\n/**\n * getUserMedia error name → hint szöveg, ha van releváns megoldás; egyébként üres string.\n */\nstatic getGetUserMediaErrorHint(err: unknown): string {\n const name: string = (err instanceof DOMException || err instanceof Error)\n ? err.name\n : '';\n\n switch (name) {\n case 'NotAllowedError':\n return 'Engedélyezd a mikrofont a böngésző címsorában (lakat ikon → Mikrofon → Engedélyezés), '\n + 'majd próbáld újra. Androidon: Beállítások → Alkalmazások → Chrome → Engedélyek → Mikrofon.';\n case 'NotReadableError':\n return 'Zárd be a mikrofont használó másik alkalmazást (pl. videóhívás, diktafon), majd próbáld újra.';\n case 'SecurityError':\n return 'Ha az alkalmazás iframe-ben fut, az iframe-nek \"allow=microphone\" attribútumra van szüksége.';\n default:\n return '';\n }\n}\n\n/**\n * Ellenőrzi, hogy a böngésző környezetben elérhető-e a hangfelvétel (navigator.mediaDevices).\n * Secure context (HTTPS vagy localhost) szükséges a mikrofonhoz; HTTP-n mobilon/desktopon undefined.\n * A reason értékek: navigator_unavailable | media_devices_unavailable | secure_context_required.\n */\nstatic getMediaRecordingAvailability(): CCAP_MediaRecordingAvailability_Interface {\n if (typeof navigator === 'undefined') {\n return { supported: false, reason: 'navigator_unavailable' };\n }\n // HTTP + LAN IP: a böngésző gyakran elrejti a mediaDevices-t; előbb secure context, hogy a reason pontos legyen.\n if (typeof window !== 'undefined' && window.isSecureContext === false) {\n return { supported: false, reason: 'secure_context_required' };\n }\n if (navigator.mediaDevices == null) {\n return { supported: false, reason: 'media_devices_unavailable' };\n }\n return { supported: true };\n}\n\n/**\n * Technikai üzenet a hibalistába (reportError): reason + rövid megoldás.\n */\nstatic getMediaUnavailableReportMessage(reason: string): string {\n return `Media recording not available (reason: ${reason}). Use HTTPS or localhost for microphone access.`;\n}\n\n/**\n * Megoldás-hint a felhasználónak (UI), ha a reason miatt HTTPS/localhost kell; egyébként üres string.\n */\nstatic getMediaUnavailableHint(reason: string): string {\n return MEDIA_UNAVAILABLE_HINT_MAP[reason] ?? '';\n}\n\n/**\n * Capability reason-ból user-facing üzenet (Hunglish).\n */\nstatic getMediaUnavailableMessage(reason: string): string {\n return MEDIA_UNAVAILABLE_MESSAGE_MAP[reason] ?? 'A hangfelvétel nem elérhető ezen az oldalon.';\n}\n\n}\n", "import { Injectable, signal } from '@angular/core';\n\nimport { DyFM_Log, second } from '@futdevpro/fsm-dynamo';\n\nimport { CCAP_SoundRecorderState_State } from '../../_enums/ccap-sound-recorder-state.enum';\nimport { CCAP_MediaRecording_Util } from '../../_collections/utils/media-recording/media-recording.util';\nimport { CCAP_SoundRecorderChunkMeta_Interface } from './ccap-sound-recorder-chunk-meta.interface';\n\n/** MIME típusok sorrendje (első támogatottat használjuk). */\nconst MIME_CANDIDATES: string[] = [\n 'audio/webm;codecs=opus',\n 'audio/webm',\n 'audio/ogg;codecs=opus',\n 'audio/ogg',\n 'audio/mp4',\n];\n\n/**\n * Sound recorder control service.\n * Mikrofon felvétel MediaRecorder-rel; chunk és volume callback.\n * Állapot: stopped | standby | running.\n * Android/mobile támogatás: explicit getUserMedia constraints, track.onended figyelés,\n * AudioContext state kezelés, devicechange listener, getUserMedia timeout.\n */\n@Injectable({ providedIn: 'root' })\nexport class CCAP_SoundRecorder_ControlService {\n\n /** VLA küszöb (time-domain átlag); ha volume >= gate, beszédnek tekintjük. */\n readonly volumeGate: number = 0.05;\n\n /** Csend időtartam (ms), után standby-ba váltunk running-ból. */\n readonly silenceTimeLimitMs: number = 5 * second;\n\n /** MediaRecorder timeslice: ondataavailable intervallum (ms). */\n private readonly timesliceMs: number = 5 * second;\n\n /** Max chunk szám szegmensenként; ha eléri, mid-recording flush (6 × 5s = 30s). */\n private readonly segmentMaxChunks: number = 6;\n\n /** Puha szegmens határ: min chunk szám ahonnan csend alapú flush érvényesül (4 × 5s = 20s). */\n private readonly segmentSoftFlushMinChunks: number = 4;\n\n /** getUserMedia timeout (ms); Samsung Knox és egyéb Android device-okon a hívás akadhat. */\n private readonly getUserMediaTimeoutMs: number = 15 * second;\n\n /** Jelenlegi állapot. */\n readonly state_$ = signal<CCAP_SoundRecorderState_State>(CCAP_SoundRecorderState_State.stopped);\n\n private mediaStream: MediaStream | null = null;\n private mediaRecorder: MediaRecorder | null = null;\n private audioContext: AudioContext | null = null;\n private analyser: AnalyserNode | null = null;\n /** AudioContext source node referencia: GC-védelem (lokálisként egyes WebView-kban eltávolítható). */\n private audioSourceNode: MediaStreamAudioSourceNode | null = null;\n private volumeAnimationId: number | null = null;\n private chunkIndex: number = 0;\n private chunks: Blob[] = [];\n /**\n * True amíg mid-recording flush (restartRecorderForFlush) zajlik: a stop() után az onstop\n * handler flush-olja a chunks-ot és új recorder-t indít. Eközben az ondataavailable nem\n * vizsgálja a flush feltételt.\n */\n private isRestartingForFlush: boolean = false;\n private selectedMime: string = '';\n private onChunkCb: ((blob: Blob, meta: CCAP_SoundRecorderChunkMeta_Interface) => void) | null = null;\n private onVolumeCb: ((value: number) => void) | null = null;\n /** Hiba esetén meghívandó callback (pl. voice-notes-poc → hibalista); aszinkron hibák (volume loop startCapture). */\n private onErrorCb: ((err: unknown) => void) | null = null;\n /** devicechange listener referencia a cleanup-hoz. */\n private deviceChangeHandler: (() => void) | null = null;\n\n /** Csend kezdete (ms); VLA running→standby időzítőhöz. */\n private silenceStartTime: number | null = null;\n\n /**\n * Chunk callback beállítása (minden szegmens után hívódik).\n */\n setOnChunk(cb: (blob: Blob, meta: CCAP_SoundRecorderChunkMeta_Interface) => void): void {\n this.onChunkCb = cb;\n }\n\n /**\n * Volume callback beállítása (0..1; volume gate indikátorhoz).\n */\n setOnVolume(cb: (value: number) => void): void {\n this.onVolumeCb = cb;\n }\n\n /**\n * Hiba callback beállítása (pl. voice-notes-poc: showError → reportError a szerverre).\n * A volume loop-ból induló startCapture hibáinál hívódik, hogy a hiba a hibalistába kerüljön.\n */\n setOnError(cb: (err: unknown) => void): void {\n this.onErrorCb = cb;\n }\n\n /**\n * Támogatott MIME kiválasztása (első a listából, amit a böngésző támogat).\n */\n private selectMime(): string {\n for (const mime of MIME_CANDIDATES) {\n if (MediaRecorder.isTypeSupported(mime)) {\n return mime;\n }\n }\n return 'audio/webm';\n }\n\n /**\n * Fájlnév kiterjesztés MIME alapján.\n */\n private getExtension(): string {\n if (this.selectedMime.startsWith('audio/webm')) return 'webm';\n if (this.selectedMime.startsWith('audio/ogg')) return 'ogg';\n if (this.selectedMime.startsWith('audio/mp4')) return 'mp4';\n return 'webm';\n }\n\n /**\n * Figyelés indítása (standby): mikrofon stream, volume callback indul.\n * Rögzítés még nem indul; startCapture() indítja.\n * getUserMedia explicit audio constraints-szel hívódik (echoCancellation, noiseSuppression,\n * autoGainControl, channelCount) — Android/mobile eszközöknél fontos.\n * Timeout-tal védett (getUserMediaTimeoutMs) Samsung Knox és hasonló esetek ellen.\n * Track ended + devicechange listener-eket regisztrál; hiba esetén wrapGetUserMediaError.\n */\n async startListening(): Promise<void> {\n if (this.state_$() !== CCAP_SoundRecorderState_State.stopped) {\n return;\n }\n try {\n const availability = CCAP_MediaRecording_Util.getMediaRecordingAvailability();\n if (!availability.supported) {\n const msg: string =\n `Media recording not available (reason: ${availability.reason ?? 'unknown'})`;\n const err: Error & { code?: string } = new Error(msg);\n err.code = 'CCAP_MEDIA_NOT_AVAILABLE';\n throw err;\n }\n // getUserMedia explicit constraints-szel + timeout védelem.\n // A timeout-ot clearTimeout-tal takarítjuk, hogy ne maradjon orphaned reject a tesztben.\n let getUserMediaTimeoutId: ReturnType<typeof setTimeout> | null = null;\n try {\n const mediaPromise: Promise<MediaStream> = navigator.mediaDevices.getUserMedia({\n audio: {\n echoCancellation: true,\n noiseSuppression: true,\n autoGainControl: true,\n channelCount: 1,\n },\n });\n const timeoutPromise: Promise<never> = new Promise<never>(\n (_resolve: (value: never) => void, reject: (reason: unknown) => void): void => {\n getUserMediaTimeoutId = setTimeout((): void => {\n const err: Error & { code?: string } = new Error(\n `getUserMedia timed out after ${this.getUserMediaTimeoutMs}ms`,\n ) as Error & { code?: string };\n err.code = 'CCAP_MIC_TIMEOUT';\n reject(err);\n }, this.getUserMediaTimeoutMs);\n },\n );\n this.mediaStream = await Promise.race([mediaPromise, timeoutPromise]);\n } catch (mediaErr: unknown) {\n throw CCAP_MediaRecording_Util.wrapGetUserMediaError(mediaErr);\n } finally {\n if (getUserMediaTimeoutId !== null) {\n clearTimeout(getUserMediaTimeoutId);\n }\n }\n // Track settings diagnosztika (Android-on a tényleges settings eltérhet a kérttől).\n const audioTrack: MediaStreamTrack | undefined = this.mediaStream.getAudioTracks()[0];\n if (audioTrack) {\n DyFM_Log.info('[CCAP] mic track settings', audioTrack.getSettings());\n // Track ended figyelés: BT disconnect, hardver hiba, OS-szintű mikrofon visszavonás.\n audioTrack.onended = (): void => {\n DyFM_Log.info('[CCAP] mic track ended unexpectedly');\n this.stopListening();\n this.onErrorCb?.(new Error('Microphone track ended unexpectedly (device disconnected?)'));\n };\n }\n // Device change figyelés (BT device csatlakozás/lecsatlakozás diagnosztika).\n this.registerDeviceChangeListener();\n this.selectedMime = this.selectMime();\n this.startVolumeLoop();\n this.state_$.set(CCAP_SoundRecorderState_State.standby);\n } catch (err: unknown) {\n this.state_$.set(CCAP_SoundRecorderState_State.stopped);\n throw err;\n }\n }\n\n /**\n * Figyelés és rögzítés leállítása; stream felszabadítása.\n * Ha running állapotban vagyunk, stopCapture aszinkron módban (isFinalStop=true): a mediaRecorder.stop()\n * triggereli az utolsó ondataavailable-t (a bufferelt hang), majd az onstop flush-olja a chunks-ot.\n * A szinkron flush NEM használható itt, mert a mediaRecorder.stop() utáni utolsó ondataavailable\n * aszinkron jön — szinkron flush-sal a bufferelt hang elveszne.\n */\n stopListening(): void {\n const wasRunning: boolean = this.state_$() === CCAP_SoundRecorderState_State.running;\n if (wasRunning) {\n // isFinalStop=true: a user megállította a felvételt; synchronous=false (default): onstop flush.\n this.stopCapture(true);\n }\n this.stopVolumeLoop();\n if (!wasRunning) {\n this.stopMediaRecorder();\n }\n this.silenceStartTime = null;\n this.unregisterDeviceChangeListener();\n if (this.mediaStream) {\n this.mediaStream.getTracks().forEach((t: MediaStreamTrack): void => t.stop());\n this.mediaStream = null;\n }\n this.state_$.set(CCAP_SoundRecorderState_State.stopped);\n }\n\n /**\n * Rögzítés indítása (standby-ból VLA vagy manuálisan). Ha még nincs stream, startListening előbb.\n * Hiba esetén (pl. getUserMedia/MediaRecorder telefonon) onErrorCb hívása, állapot stopped,\n * és stopVolumeLoop (resource leak elkerülés ha startCapture hiba után state=stopped).\n */\n async startCapture(): Promise<void> {\n try {\n if (this.mediaStream == null) {\n await this.startListening();\n }\n if (this.mediaStream == null) {\n return;\n }\n this.silenceStartTime = null;\n this.chunks = [];\n this.createAndStartRecorder();\n this.state_$.set(CCAP_SoundRecorderState_State.running);\n } catch (err: unknown) {\n // Resource leak elkerülés: volume loop leállítása ha startCapture hibázik.\n this.stopVolumeLoop();\n this.state_$.set(CCAP_SoundRecorderState_State.stopped);\n this.onErrorCb?.(err);\n }\n }\n\n /**\n * Rögzítés leállítása; chunk összeállítása és callback hívása.\n * isFinalStop: true ha a user explicit megállította a felvételt (stopListening) — a consumer\n * komponensek (auto-send) ezt használják az utolsó chunk küldéséhez.\n * synchronous: true esetén a flush szinkronban fut (nem async onstop-ban) — ngOnDestroy race fix.\n * try-catch a mediaRecorder.stop()-on: ha a recorder már inactive (race: silence + user stop egyszerre).\n */\n stopCapture(isFinalStop: boolean = false, synchronous: boolean = false): void {\n this.isRestartingForFlush = false;\n if (this.mediaRecorder == null || this.state_$() !== CCAP_SoundRecorderState_State.running) {\n return;\n }\n // mediaRecorder.stop() InvalidStateError-t dobhat ha a recorder már inactive (race condition).\n try {\n this.mediaRecorder.stop();\n } catch (stopErr: unknown) {\n DyFM_Log.info('[CCAP] mediaRecorder.stop() failed (likely already inactive)', stopErr);\n this.mediaRecorder = null;\n this.flushChunksAsSegment(isFinalStop);\n this.state_$.set(\n this.mediaStream\n ? CCAP_SoundRecorderState_State.standby\n : CCAP_SoundRecorderState_State.stopped,\n );\n return;\n }\n // Szinkron mód: flush most (stopListening-ből hívva), hogy az ngOnDestroy callback cseréje előtt megtörténjen.\n if (synchronous) {\n this.mediaRecorder = null;\n this.flushChunksAsSegment(isFinalStop);\n this.state_$.set(\n this.mediaStream\n ? CCAP_SoundRecorderState_State.standby\n : CCAP_SoundRecorderState_State.stopped,\n );\n return;\n }\n // Aszinkron mód (silence detection hívja): az onstop event flush-olja a chunks-ot.\n this.mediaRecorder.onstop = (): void => {\n this.mediaRecorder = null;\n this.flushChunksAsSegment(isFinalStop);\n this.state_$.set(\n this.mediaStream\n ? CCAP_SoundRecorderState_State.standby\n : CCAP_SoundRecorderState_State.stopped,\n );\n };\n }\n\n /**\n * MediaRecorder létrehozása és indítása a meglévő stream-mel.\n * Közös logika startCapture és restartRecorderForFlush között.\n */\n private createAndStartRecorder(): void {\n if (!this.mediaStream) {\n return;\n }\n this.mediaRecorder = new MediaRecorder(this.mediaStream, {\n mimeType: this.selectedMime,\n audioBitsPerSecond: 128000,\n });\n this.mediaRecorder.ondataavailable = (ev: BlobEvent): void => {\n if (ev.data.size > 0) {\n this.chunks.push(ev.data);\n }\n // Mid-flush restart közben vagy nem running állapotban: flush feltétel nem vizsgálandó.\n if (this.state_$() !== CCAP_SoundRecorderState_State.running || this.isRestartingForFlush) {\n return;\n }\n // Hard szegmens határ (max chunks elérve) → flush.\n const reachedMax: boolean = this.chunks.length >= this.segmentMaxChunks;\n // Puha szegmens határ: elég chunk gyűlt és csend van → szóhatáron vágunk, nem szó közepén.\n const isSoftFlush: boolean = this.chunks.length >= this.segmentSoftFlushMinChunks\n && this.silenceStartTime !== null;\n if (reachedMax || isSoftFlush) {\n this.restartRecorderForFlush();\n }\n };\n this.mediaRecorder.start(this.timesliceMs);\n }\n\n /**\n * Mid-recording flush: MediaRecorder újraindítása a meglévő stream-mel.\n * A stop() triggereli az utolsó ondataavailable-t (bufferelt hang), majd onstop-ban flush + új\n * recorder indítás. Ez biztosítja, hogy minden szegmens saját WebM init szegmenst kap (EBML header +\n * Segment + Tracks) és a Cluster timestamp-ek 0-tól indulnak.\n */\n private restartRecorderForFlush(): void {\n if (!this.mediaRecorder || this.mediaRecorder.state === 'inactive') {\n return;\n }\n this.isRestartingForFlush = true;\n // Silence timer reset: a restart utáni új recorder friss csendidőzítőt kap.\n // Ha nem töröljük, a volume loop tick a régi silenceStartTime-mal azonnal stopCapture-t hívna,\n // mert Date.now() - silenceStartTime >= 5000ms már igaz a flush előtti csendből.\n this.silenceStartTime = null;\n DyFM_Log.info('[CCAP] restartRecorderForFlush: stopping current recorder for mid-recording flush');\n this.mediaRecorder.onstop = (): void => {\n this.isRestartingForFlush = false;\n this.mediaRecorder = null;\n const chunkCount: number = this.chunks.length;\n this.flushChunksAsSegment(false);\n DyFM_Log.info(`[CCAP] restartRecorderForFlush: flushed ${chunkCount} chunks as segment`);\n // Ha közben stopListening hívódott (state nem running), nem indítunk új recorder-t.\n if (this.state_$() !== CCAP_SoundRecorderState_State.running || !this.mediaStream) {\n DyFM_Log.info('[CCAP] restartRecorderForFlush: not restarting (state changed or no stream)');\n return;\n }\n this.createAndStartRecorder();\n DyFM_Log.info('[CCAP] restartRecorderForFlush: new recorder started for next segment');\n };\n try {\n this.mediaRecorder.stop();\n } catch {\n // MediaRecorder már inactive — kézi flush.\n this.isRestartingForFlush = false;\n this.mediaRecorder = null;\n this.flushChunksAsSegment(false);\n }\n }\n\n /**\n * Aktuális chunks[] blob-ba összeáll, onChunkCb hívás, chunks ürítés.\n * isFinal: true ha a user megállította a felvételt; false mid-recording és silence flush esetén.\n */\n private flushChunksAsSegment(isFinal: boolean): void {\n if (this.chunks.length === 0) {\n return;\n }\n const blob: Blob = new Blob(this.chunks, { type: this.selectedMime });\n const meta: CCAP_SoundRecorderChunkMeta_Interface = {\n mimeType: this.selectedMime,\n filename: `audio-${Date.now()}.${this.getExtension()}`,\n chunkIndex: this.chunkIndex++,\n isFinal: isFinal,\n };\n this.chunks = [];\n this.onChunkCb?.(blob, meta);\n }\n\n /**\n * Volume loop indítása: AudioContext + AnalyserNode, requestAnimationFrame tick.\n * AudioContext onstatechange: suspended állapot kezelése (háttér tab, Android audio focus loss).\n * Explicit resume() hívás: Android WebView-ban a new AudioContext() suspended állapotba kerülhet\n * ha a user gesture context lejárt (pl. az await getUserMedia() után). Az onstatechange nem tüzel\n * ha már eleve suspended — ezért kell explicit resume().\n */\n private startVolumeLoop(): void {\n if (this.mediaStream == null || this.onVolumeCb == null) {\n return;\n }\n this.audioContext = new AudioContext();\n // Android WebView: AudioContext suspended-ként jöhet létre ha a user gesture context lejárt.\n // Explicit resume() szükséges — az onstatechange nem tüzel ha nincs állapotváltás.\n if (this.audioContext.state === 'suspended') {\n void this.audioContext.resume().catch((): void => {});\n }\n // AudioContext state változás figyelés (Android háttérbe rakás, audio focus loss).\n this.audioContext.onstatechange = (): void => {\n const ctxState: string = this.audioContext?.state ?? 'unknown';\n DyFM_Log.info('[CCAP] AudioContext state changed:', ctxState);\n if (ctxState === 'suspended' && this.state_$() !== CCAP_SoundRecorderState_State.stopped) {\n void this.audioContext?.resume().catch((): void => {});\n }\n };\n // Source node class field-ben tároljuk (nem lokális változóban): egyes Android WebView-kban\n // a lokális referencia GC-elődhet és az audio graph szakad.\n this.audioSourceNode =\n this.audioContext.createMediaStreamSource(this.mediaStream);\n this.analyser = this.audioContext.createAnalyser();\n this.analyser.fftSize = 2048;\n this.analyser.smoothingTimeConstant = 0.8;\n this.audioSourceNode.connect(this.analyser);\n const timeDomainArray: Float32Array = new Float32Array(this.analyser.fftSize);\n\n const tick = (): void => {\n if (this.analyser == null || this.onVolumeCb == null) {\n return;\n }\n this.analyser.getFloatTimeDomainData(timeDomainArray);\n let sum: number = 0;\n for (let i: number = 0; i < timeDomainArray.length; i++) {\n sum += Math.abs(timeDomainArray[i]);\n }\n const volume: number = sum / timeDomainArray.length;\n this.onVolumeCb(volume);\n\n const state = this.state_$();\n if (state === CCAP_SoundRecorderState_State.standby && volume >= this.volumeGate) {\n void this.startCapture();\n this.volumeAnimationId = requestAnimationFrame(tick);\n return;\n }\n if (state === CCAP_SoundRecorderState_State.running && !this.isRestartingForFlush) {\n if (volume < this.volumeGate) {\n if (this.silenceStartTime === null) {\n this.silenceStartTime = Date.now();\n } else if (Date.now() - this.silenceStartTime >= this.silenceTimeLimitMs) {\n // Silence detection: isFinalStop=false (nem user stop), synchronous=false (aszinkron onstop).\n this.stopCapture();\n this.silenceStartTime = null;\n }\n } else {\n this.silenceStartTime = null;\n }\n }\n\n this.volumeAnimationId = requestAnimationFrame(tick);\n };\n tick();\n }\n\n /**\n * Volume loop leállítása: cancelAnimationFrame, AudioContext close, analyser null.\n */\n private stopVolumeLoop(): void {\n if (this.volumeAnimationId != null) {\n cancelAnimationFrame(this.volumeAnimationId);\n this.volumeAnimationId = null;\n }\n this.audioSourceNode = null;\n if (this.audioContext != null) {\n this.audioContext.onstatechange = null;\n this.audioContext.close().catch((): void => {});\n this.audioContext = null;\n }\n this.analyser = null;\n }\n\n /**\n * MediaRecorder leállítása (standby/stopped állapotból hívva).\n * try-catch: ha a recorder state nem egyezik (defense in depth).\n */\n private stopMediaRecorder(): void {\n if (this.mediaRecorder != null && this.mediaRecorder.state !== 'inactive') {\n try {\n this.mediaRecorder.stop();\n } catch {\n // MediaRecorder már inactive — figyelmen kívül hagyjuk.\n }\n this.mediaRecorder = null;\n }\n this.chunks = [];\n this.isRestartingForFlush = false;\n }\n\n /**\n * Device change listener regisztrálása (BT device csatlakozás/lecsatlakozás diagnosztika).\n * try-catch: nem minden böngésző/teszt környezet támogatja az addEventListener-t a mediaDevices-en.\n */\n private registerDeviceChangeListener(): void {\n try {\n this.deviceChangeHandler = (): void => {\n DyFM_Log.info('[CCAP] media device change detected');\n };\n navigator.mediaDevices.addEventListener('devicechange', this.deviceChangeHandler);\n } catch {\n this.deviceChangeHandler = null;\n }\n }\n\n /**\n * Device change listener eltávolítása.\n */\n private unregisterDeviceChangeListener(): void {\n if (this.deviceChangeHandler) {\n try {\n navigator.mediaDevices.removeEventListener('devicechange', this.deviceChangeHandler);\n } catch {\n // Figyelmen kívül hagyjuk — nem minden környezetben elérhető.\n }\n this.deviceChangeHandler = null;\n }\n }\n}\n"],
|
|
5
|
-
"mappings": "sGAKA,IAAYA,EAAZ,SAAYA,EAA6B,CACvCA,OAAAA,EAAA,QAAA,UACAA,EAAA,QAAA,UACAA,EAAA,QAAA,UAHUA,CAIZ,EAJYA,GAA6B,CAAA,CAAA,ECFzC,IAAMC,EAAwD,CAC5DC,sBACE,iHACFC,0BACE,2HACFC,wBACE,qKAKEC,EAAqD,CACzDF,0BACE,8GACFC,wBACE,+GAMSE,EAAP,KAA+B,CAQrC,OAAOC,sBAAsBC,EAAY,CAEvC,GACEA,aAAeC,OACZ,SAAUD,GACV,OAAQA,EAAgCE,MAAS,UAC/CF,EAAgCE,KAAgBC,WAAW,OAAO,EAEvE,OAAOH,EAIT,IAAMI,EAAgBJ,aAAeK,cAAgBL,aAAeC,MAChED,EAAII,KACJ,eAEAF,EACAI,EAEJ,OAAQF,EAAI,CACV,IAAK,kBACHF,EAAO,6BACPI,EAAU,qDACV,MACF,IAAK,gBACHJ,EAAO,qBACPI,EAAU,4CACV,MACF,IAAK,mBACHJ,EAAO,wBACPI,EAAU,4EACV,MACF,IAAK,uBACHJ,EAAO,2BACPI,EAAU,8DACV,MACF,IAAK,aACHJ,EAAO,mBACPI,EAAU,sDACV,MACF,IAAK,gBACHJ,EAAO,0BACPI,EAAU,sFACV,MACF,QACEJ,EAAO,yBACPI,EAAU,4BAA4BF,CAAI,GAC1C,KACJ,CAEA,IAAMG,EAAoC,IAAIN,MAAMK,CAAO,EAC3DC,OAAAA,EAAQL,KAAOA,EACfK,EAAQC,MAAQR,EACTO,CACT,CAMA,OAAOE,4BAA4BT,EAAY,CAK7C,OAJsBA,aAAeK,cAAgBL,aAAeC,MAChED,EAAII,KACJ,GAEQ,CACV,IAAK,kBACH,MAAO,mIACT,IAAK,gBACH,MAAO,uDACT,IAAK,mBACH,MAAO,yFACT,IAAK,uBACH,MAAO,sEACT,IAAK,aACH,MAAO,0DACT,IAAK,gBACH,MAAO,yGACT,QACE,MAAO,wDACX,CACF,CAKA,OAAOM,yBAAyBV,EAAY,CAK1C,OAJsBA,aAAeK,cAAgBL,aAAeC,MAChED,EAAII,KACJ,GAEQ,CACV,IAAK,kBACH,MAAO,mQAET,IAAK,mBACH,MAAO,iIACT,IAAK,gBACH,MAAO,2GACT,QACE,MAAO,EACX,CACF,CAOA,OAAOO,+BAA6B,CAClC,OAAI,OAAOC,UAAc,IAChB,CAAEC,UAAW,GAAOC,OAAQ,uBAAuB,EAGxD,OAAOC,OAAW,KAAeA,OAAOC,kBAAoB,GACvD,CAAEH,UAAW,GAAOC,OAAQ,yBAAyB,EAE1DF,UAAUK,cAAgB,KACrB,CAAEJ,UAAW,GAAOC,OAAQ,2BAA2B,EAEzD,CAAED,UAAW,EAAI,CAC1B,CAKA,OAAOK,iCAAiCJ,EAAc,CACpD,MAAO,0CAA0CA,CAAM,kDACzD,CAKA,OAAOK,wBAAwBL,EAAc,CAC3C,OAAOjB,EAA2BiB,CAAM,GAAK,EAC/C,CAKA,OAAOM,2BAA2BN,EAAc,CAC9C,OAAOrB,EAA8BqB,CAAM,GAAK,yDAClD,GC5KA,IAAAO,EAAiC,OAOjC,IAAMC,EAA4B,CAChC,yBACA,aACA,wBACA,YACA,WAAW,EAWAC,GAAiC,IAAA,CAAxC,MAAOA,CAAiC,CAGnCC,WAAqB,IAGrBC,mBAA6B,EAAIC,SAGzBC,YAAsB,EAAID,SAG1BE,iBAA2B,EAG3BC,0BAAoC,EAGpCC,sBAAgC,GAAKJ,SAG7CK,QAAUC,EAAsCC,EAA8BC,OAAO,EAEtFC,YAAkC,KAClCC,cAAsC,KACtCC,aAAoC,KACpCC,SAAgC,KAEhCC,gBAAqD,KACrDC,kBAAmC,KACnCC,WAAqB,EACrBC,OAAiB,CAAA,EAMjBC,qBAAgC,GAChCC,aAAuB,GACvBC,UAAwF,KACxFC,WAA+C,KAE/CC,UAA6C,KAE7CC,oBAA2C,KAG3CC,iBAAkC,KAK1CC,WAAWC,EAAqE,CAC9E,KAAKN,UAAYM,CACnB,CAKAC,YAAYD,EAA2B,CACrC,KAAKL,WAAaK,CACpB,CAMAE,WAAWF,EAA0B,CACnC,KAAKJ,UAAYI,CACnB,CAKQG,YAAU,CAChB,QAAWC,KAAQjC,EACjB,GAAIkC,cAAcC,gBAAgBF,CAAI,EACpC,OAAOA,EAGX,MAAO,YACT,CAKQG,cAAY,CAClB,OAAI,KAAKd,aAAae,WAAW,YAAY,EAAU,OACnD,KAAKf,aAAae,WAAW,WAAW,EAAU,MAClD,KAAKf,aAAae,WAAW,WAAW,EAAU,MAC/C,MACT,CAUMC,gBAAc,QAAAC,EAAA,sBAClB,GAAI,KAAK9B,QAAO,IAAOE,EAA8BC,QAGrD,GAAI,CACF,IAAM4B,EAAeC,EAAyBC,8BAA6B,EAC3E,GAAI,CAACF,EAAaG,UAAW,CAC3B,IAAMC,EACJ,0CAA0CJ,EAAaK,QAAU,SAAS,IACtEC,EAAiC,IAAIC,MAAMH,CAAG,EACpDE,MAAAA,EAAIE,KAAO,2BACLF,CACR,CAGA,IAAIG,EAA8D,KAClE,GAAI,CACF,IAAMC,EAAqCC,UAAUC,aAAaC,aAAa,CAC7EC,MAAO,CACLC,iBAAkB,GAClBC,iBAAkB,GAClBC,gBAAiB,GACjBC,aAAc,GAEjB,EACKC,EAAiC,IAAIC,QACzC,CAACC,EAAkCC,IAA2C,CAC5Eb,EAAwBc,WAAW,IAAW,CAC5C,IAAMjB,EAAiC,IAAIC,MACzC,gCAAgC,KAAKvC,qBAAqB,IAAI,EAEhEsC,EAAIE,KAAO,mBACXc,EAAOhB,CAAG,CACZ,EAAG,KAAKtC,qBAAqB,CAC/B,CAAC,EAEH,KAAKK,YAAc,MAAM+C,QAAQI,KAAK,CAACd,EAAcS,CAAc,CAAC,CACtE,OAASM,EAAmB,CAC1B,MAAMxB,EAAyByB,sBAAsBD,CAAQ,CAC/D,QAAC,CACKhB,IAA0B,MAC5BkB,aAAalB,CAAqB,CAEtC,CAEA,IAAMmB,EAA2C,KAAKvD,YAAYwD,eAAc,EAAG,CAAC,EAChFD,IACFE,WAASC,KAAK,4BAA6BH,EAAWI,YAAW,CAAE,EAEnEJ,EAAWK,QAAU,IAAW,CAC9BH,WAASC,KAAK,qCAAqC,EACnD,KAAKG,cAAa,EAClB,KAAKjD,YAAY,IAAIsB,MAAM,4DAA4D,CAAC,CAC1F,GAGF,KAAK4B,6BAA4B,EACjC,KAAKrD,aAAe,KAAKU,WAAU,EACnC,KAAK4C,gBAAe,EACpB,KAAKnE,QAAQoE,IAAIlE,EAA8BmE,OAAO,CACxD,OAAShC,EAAc,CACrB,WAAKrC,QAAQoE,IAAIlE,EAA8BC,OAAO,EAChDkC,CACR,CACF,GASA4B,eAAa,CACX,IAAMK,EAAsB,KAAKtE,QAAO,IAAOE,EAA8BqE,QACzED,GAEF,KAAKE,YAAY,EAAI,EAEvB,KAAKC,eAAc,EACdH,GACH,KAAKI,kBAAiB,EAExB,KAAKxD,iBAAmB,KACxB,KAAKyD,+BAA8B,EAC/B,KAAKvE,cACP,KAAKA,YAAYwE,UAAS,EAAGC,QAASC,GAA8BA,EAAEC,KAAI,CAAE,EAC5E,KAAK3E,YAAc,MAErB,KAAKJ,QAAQoE,IAAIlE,EAA8BC,OAAO,CACxD,CAOM6E,cAAY,QAAAlD,EAAA,sBAChB,GAAI,CAIF,GAHI,KAAK1B,aAAe,OACtB,MAAM,KAAKyB,eAAc,GAEvB,KAAKzB,aAAe,KACtB,OAEF,KAAKc,iBAAmB,KACxB,KAAKP,OAAS,CAAA,EACd,KAAKsE,uBAAsB,EAC3B,KAAKjF,QAAQoE,IAAIlE,EAA8BqE,OAAO,CACxD,OAASlC,EAAc,CAErB,KAAKoC,eAAc,EACnB,KAAKzE,QAAQoE,IAAIlE,EAA8BC,OAAO,EACtD,KAAKa,YAAYqB,CAAG,CACtB,CACF,GASAmC,YAAYU,EAAuB,GAAOC,EAAuB,GAAK,CAEpE,GADA,KAAKvE,qBAAuB,GACxB,OAAKP,eAAiB,MAAQ,KAAKL,QAAO,IAAOE,EAA8BqE,SAInF,IAAI,CACF,KAAKlE,cAAc0E,KAAI,CACzB,OAASK,EAAkB,CACzBvB,WAASC,KAAK,+DAAgEsB,CAAO,EACrF,KAAK/E,cAAgB,KACrB,KAAKgF,qBAAqBH,CAAW,EACrC,KAAKlF,QAAQoE,IACX,KAAKhE,YACDF,EAA8BmE,QAC9BnE,EAA8BC,OAAO,EAE3C,MACF,CAEA,GAAIgF,EAAa,CACf,KAAK9E,cAAgB,KACrB,KAAKgF,qBAAqBH,CAAW,EACrC,KAAKlF,QAAQoE,IACX,KAAKhE,YACDF,EAA8BmE,QAC9BnE,EAA8BC,OAAO,EAE3C,MACF,CAEA,KAAKE,cAAciF,OAAS,IAAW,CACrC,KAAKjF,cAAgB,KACrB,KAAKgF,qBAAqBH,CAAW,EACrC,KAAKlF,QAAQoE,IACX,KAAKhE,YACDF,EAA8BmE,QAC9BnE,EAA8BC,OAAO,CAE7C,EACF,CAMQ8E,wBAAsB,CACvB,KAAK7E,cAGV,KAAKC,cAAgB,IAAIoB,cAAc,KAAKrB,YAAa,CACvDmF,SAAU,KAAK1E,aACf2E,mBAAoB,MACrB,EACD,KAAKnF,cAAcoF,gBAAmBC,GAAuB,CAK3D,GAJIA,EAAGC,KAAKC,KAAO,GACjB,KAAKjF,OAAOkF,KAAKH,EAAGC,IAAI,EAGtB,KAAK3F,QAAO,IAAOE,EAA8BqE,SAAW,KAAK3D,qBACnE,OAGF,IAAMkF,EAAsB,KAAKnF,OAAOoF,QAAU,KAAKlG,iBAEjDmG,EAAuB,KAAKrF,OAAOoF,QAAU,KAAKjG,2BACnD,KAAKoB,mBAAqB,MAC3B4E,GAAcE,IAChB,KAAKC,wBAAuB,CAEhC,EACA,KAAK5F,cAAc6F,MAAM,KAAKtG,WAAW,EAC3C,CAQQqG,yBAAuB,CAC7B,GAAI,GAAC,KAAK5F,eAAiB,KAAKA,cAAc8F,QAAU,YAGxD,MAAKvF,qBAAuB,GAI5B,KAAKM,iBAAmB,KACxB2C,WAASC,KAAK,mFAAmF,EACjG,KAAKzD,cAAciF,OAAS,IAAW,CACrC,KAAK1E,qBAAuB,GAC5B,KAAKP,cAAgB,KACrB,IAAM+F,EAAqB,KAAKzF,OAAOoF,OAIvC,GAHA,KAAKV,qBAAqB,EAAK,EAC/BxB,WAASC,KAAK,2CAA2CsC,CAAU,oBAAoB,EAEnF,KAAKpG,QAAO,IAAOE,EAA8BqE,SAAW,CAAC,KAAKnE,YAAa,CACjFyD,WAASC,KAAK,6EAA6E,EAC3F,MACF,CACA,KAAKmB,uBAAsB,EAC3BpB,WAASC,KAAK,uEAAuE,CACvF,EACA,GAAI,CACF,KAAKzD,cAAc0E,KAAI,CACzB,MAAQ,CAEN,KAAKnE,qBAAuB,GAC5B,KAAKP,cAAgB,KACrB,KAAKgF,qBAAqB,EAAK,CACjC,EACF,CAMQA,qBAAqBgB,EAAgB,CAC3C,GAAI,KAAK1F,OAAOoF,SAAW,EACzB,OAEF,IAAMO,EAAa,IAAIC,KAAK,KAAK5F,OAAQ,CAAE6F,KAAM,KAAK3F,YAAY,CAAE,EAC9D4F,EAA8C,CAClDlB,SAAU,KAAK1E,aACf6F,SAAU,SAASC,KAAKC,IAAG,CAAE,IAAI,KAAKjF,aAAY,CAAE,GACpDjB,WAAY,KAAKA,aACjB2F,QAASA,GAEX,KAAK1F,OAAS,CAAA,EACd,KAAKG,YAAYwF,EAAMG,CAAI,CAC7B,CASQtC,iBAAe,CACrB,GAAI,KAAK/D,aAAe,MAAQ,KAAKW,YAAc,KACjD,OAEF,KAAKT,aAAe,IAAIuG,aAGpB,KAAKvG,aAAa6F,QAAU,aACzB,KAAK7F,aAAawG,OAAM,EAAGC,MAAM,IAAW,CAAE,CAAC,EAGtD,KAAKzG,aAAa0G,cAAgB,IAAW,CAC3C,IAAMC,EAAmB,KAAK3G,cAAc6F,OAAS,UACrDtC,WAASC,KAAK,qCAAsCmD,CAAQ,EACxDA,IAAa,aAAe,KAAKjH,QAAO,IAAOE,EAA8BC,SAC1E,KAAKG,cAAcwG,OAAM,EAAGC,MAAM,IAAW,CAAE,CAAC,CAEzD,EAGA,KAAKvG,gBACH,KAAKF,aAAa4G,wBAAwB,KAAK9G,WAAW,EAC5D,KAAKG,SAAW,KAAKD,aAAa6G,eAAc,EAChD,KAAK5G,SAAS6G,QAAU,KACxB,KAAK7G,SAAS8G,sBAAwB,GACtC,KAAK7G,gBAAgB8G,QAAQ,KAAK/G,QAAQ,EAC1C,IAAMgH,EAAgC,IAAIC,aAAa,KAAKjH,SAAS6G,OAAO,EAEtEK,EAAOA,IAAW,CACtB,GAAI,KAAKlH,UAAY,MAAQ,KAAKQ,YAAc,KAC9C,OAEF,KAAKR,SAASmH,uBAAuBH,CAAe,EACpD,IAAII,EAAc,EAClB,QAASC,EAAY,EAAGA,EAAIL,EAAgBxB,OAAQ6B,IAClDD,GAAOE,KAAKC,IAAIP,EAAgBK,CAAC,CAAC,EAEpC,IAAMG,EAAiBJ,EAAMJ,EAAgBxB,OAC7C,KAAKhF,WAAWgH,CAAM,EAEtB,IAAM5B,EAAQ,KAAKnG,QAAO,EAC1B,GAAImG,IAAUjG,EAA8BmE,SAAW0D,GAAU,KAAKtI,WAAY,CAC3E,KAAKuF,aAAY,EACtB,KAAKvE,kBAAoBuH,sBAAsBP,CAAI,EACnD,MACF,CACItB,IAAUjG,EAA8BqE,SAAW,CAAC,KAAK3D,uBACvDmH,EAAS,KAAKtI,WACZ,KAAKyB,mBAAqB,KAC5B,KAAKA,iBAAmByF,KAAKC,IAAG,EACvBD,KAAKC,IAAG,EAAK,KAAK1F,kBAAoB,KAAKxB,qBAEpD,KAAK8E,YAAW,EAChB,KAAKtD,iBAAmB,MAG1B,KAAKA,iBAAmB,MAI5B,KAAKT,kBAAoBuH,sBAAsBP,CAAI,CACrD,EACAA,EAAI,CACN,CAKQhD,gBAAc,CAChB,KAAKhE,mBAAqB,OAC5BwH,qBAAqB,KAAKxH,iBAAiB,EAC3C,KAAKA,kBAAoB,MAE3B,KAAKD,gBAAkB,KACnB,KAAKF,cAAgB,OACvB,KAAKA,aAAa0G,cAAgB,KAClC,KAAK1G,aAAa4H,MAAK,EAAGnB,MAAM,IAAW,CAAE,CAAC,EAC9C,KAAKzG,aAAe,MAEtB,KAAKC,SAAW,IAClB,CAMQmE,mBAAiB,CACvB,GAAI,KAAKrE,eAAiB,MAAQ,KAAKA,cAAc8F,QAAU,WAAY,CACzE,GAAI,CACF,KAAK9F,cAAc0E,KAAI,CACzB,MAAQ,CACN,CAEF,KAAK1E,cAAgB,IACvB,CACA,KAAKM,OAAS,CAAA,EACd,KAAKC,qBAAuB,EAC9B,CAMQsD,8BAA4B,CAClC,GAAI,CACF,KAAKjD,oBAAsB,IAAW,CACpC4C,WAASC,KAAK,qCAAqC,CACrD,EACApB,UAAUC,aAAawF,iBAAiB,eAAgB,KAAKlH,mBAAmB,CAClF,MAAQ,CACN,KAAKA,oBAAsB,IAC7B,CACF,CAKQ0D,gCAA8B,CACpC,GAAI,KAAK1D,oBAAqB,CAC5B,GAAI,CACFyB,UAAUC,aAAayF,oBAAoB,eAAgB,KAAKnH,mBAAmB,CACrF,MAAQ,CACN,CAEF,KAAKA,oBAAsB,IAC7B,CACF,4CA3eWzB,EAAiC,6BAAjCA,EAAiC6I,QAAjC7I,EAAiC8I,UAAAC,WADpB,MAAM,CAAA,SACnB/I,CAAiC,GAAA",
|
|
6
|
-
"names": ["CCAP_SoundRecorderState_State", "MEDIA_UNAVAILABLE_MESSAGE_MAP", "navigator_unavailable", "media_devices_unavailable", "secure_context_required", "MEDIA_UNAVAILABLE_HINT_MAP", "CCAP_MediaRecording_Util", "wrapGetUserMediaError", "err", "Error", "code", "startsWith", "name", "DOMException", "message", "wrapped", "cause", "getGetUserMediaErrorMessage", "getGetUserMediaErrorHint", "getMediaRecordingAvailability", "navigator", "supported", "reason", "window", "isSecureContext", "mediaDevices", "getMediaUnavailableReportMessage", "getMediaUnavailableHint", "getMediaUnavailableMessage", "import_fsm_dynamo", "MIME_CANDIDATES", "CCAP_SoundRecorder_ControlService", "volumeGate", "silenceTimeLimitMs", "second", "timesliceMs", "segmentMaxChunks", "segmentSoftFlushMinChunks", "getUserMediaTimeoutMs", "state_$", "signal", "CCAP_SoundRecorderState_State", "stopped", "mediaStream", "mediaRecorder", "audioContext", "analyser", "audioSourceNode", "volumeAnimationId", "chunkIndex", "chunks", "isRestartingForFlush", "selectedMime", "onChunkCb", "onVolumeCb", "onErrorCb", "deviceChangeHandler", "silenceStartTime", "setOnChunk", "cb", "setOnVolume", "setOnError", "selectMime", "mime", "MediaRecorder", "isTypeSupported", "getExtension", "startsWith", "startListening", "__async", "availability", "CCAP_MediaRecording_Util", "getMediaRecordingAvailability", "supported", "msg", "reason", "err", "Error", "code", "getUserMediaTimeoutId", "mediaPromise", "navigator", "mediaDevices", "getUserMedia", "audio", "echoCancellation", "noiseSuppression", "autoGainControl", "channelCount", "timeoutPromise", "Promise", "_resolve", "reject", "setTimeout", "race", "mediaErr", "wrapGetUserMediaError", "clearTimeout", "audioTrack", "getAudioTracks", "DyFM_Log", "info", "getSettings", "onended", "stopListening", "registerDeviceChangeListener", "startVolumeLoop", "set", "standby", "wasRunning", "running", "stopCapture", "stopVolumeLoop", "stopMediaRecorder", "unregisterDeviceChangeListener", "getTracks", "forEach", "t", "stop", "startCapture", "createAndStartRecorder", "isFinalStop", "synchronous", "stopErr", "flushChunksAsSegment", "onstop", "mimeType", "audioBitsPerSecond", "ondataavailable", "ev", "data", "size", "push", "reachedMax", "length", "isSoftFlush", "restartRecorderForFlush", "start", "state", "chunkCount", "isFinal", "blob", "Blob", "type", "meta", "filename", "Date", "now", "AudioContext", "resume", "catch", "onstatechange", "ctxState", "createMediaStreamSource", "createAnalyser", "fftSize", "smoothingTimeConstant", "connect", "timeDomainArray", "Float32Array", "tick", "getFloatTimeDomainData", "sum", "i", "Math", "abs", "volume", "requestAnimationFrame", "cancelAnimationFrame", "close", "addEventListener", "removeEventListener", "factory", "\u0275fac", "providedIn"]
|
|
7
|
-
}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import"./chunk-EGRHWZRV.js";import{a as Ve}from"./chunk-Q2PKIGLB.js";import{a as we}from"./chunk-TOFOK5W7.js";import{a as Ie,b as X}from"./chunk-IINV7GMO.js";import"./chunk-QPEW5PI4.js";import{g as Re}from"./chunk-7HSUCNW5.js";import"./chunk-CRYF37M7.js";import"./chunk-7JUIBZEE.js";import{a as Pe,b as Ee,c as q}from"./chunk-C7XPBJTG.js";import{b as te,f as ke,g as Ae}from"./chunk-JMZKJLUE.js";import"./chunk-WPHEQXWB.js";import{b as Me}from"./chunk-VGTXKD6D.js";import"./chunk-DJVWZQNB.js";import"./chunk-MZLFEWAN.js";import"./chunk-OEEQNIJG.js";import"./chunk-Q2NVIOCY.js";import{a as De}from"./chunk-AX7QIINI.js";import{a as ee}from"./chunk-J32YRK3S.js";import"./chunk-U2EBQMSE.js";import"./chunk-SYCUR4MY.js";import"./chunk-R5WCLLO5.js";import"./chunk-V3VQWJQL.js";import"./chunk-6GSTJE3R.js";import"./chunk-JZHYGU3K.js";import"./chunk-ZBTWQZNB.js";import"./chunk-FLAJXIYW.js";import{b as ve,c as N,f as W,i as B,n as z,o as j,p as H,v as Se}from"./chunk-EO4DNTT4.js";import{k as Te}from"./chunk-KYVIZZWW.js";import{a as V}from"./chunk-5UPNU54P.js";import{j as ye}from"./chunk-7SAFEFWU.js";import{I as $e}from"./chunk-SLSTIBOT.js";import{Aa as he,Ba as me,C as x,D as I,E as se,Eb as xe,Fa as _,Fb as ge,Ga as k,Gb as U,J as m,K as u,Kb as be,L as le,M as de,Z as d,aa as l,ca as ce,da as M,ga as f,ha as _e,hb as b,ia as R,jb as ue,k as C,la as y,na as P,oa as S,p as v,pa as $,q as re,qa as r,ra as s,sa as w,ua as E,ub as fe,va as h,wa as c,xb as Ce,y as F,z as ae,za as pe}from"./chunk-TBMJSIBB.js";var Q="ccap-consultant",T=class{static savePanelOpen(a,e){V.writeBoolean(`${Q}:panelOpen:${a}`,e)}static loadPanelOpen(a,e){return V.readBoolean(`${Q}:panelOpen:${a}`,e)}static savePanelWidth(a,e){V.writeNumber(`${Q}:panelWidth:${a}`,e)}static loadPanelWidth(a,e){return V.readNumber(`${Q}:panelWidth:${a}`,e)}};var Oe=(()=>{class i{baseUrl=`${$e.api.baseUrl}/consultant`;http=x(Ce);listThreads(){return v(this.http.get(this.baseUrl))}getPickerOptions(){return v(this.http.get(`${this.baseUrl}/picker-options`))}createThread(e){return v(this.http.post(this.baseUrl,e))}getThread(e){return v(this.http.get(`${this.baseUrl}/${encodeURIComponent(e)}`))}patchThread(e){let t={};return e.label!=null&&(t.label=e.label),e.providerInstanceId!=null&&(t.providerInstanceId=e.providerInstanceId),e.model!=null&&(t.model=e.model),v(this.http.patch(`${this.baseUrl}/${encodeURIComponent(e.threadId)}`,t))}deleteThread(e){return v(this.http.delete(`${this.baseUrl}/${encodeURIComponent(e)}`))}postMessage(e){return v(this.http.post(`${this.baseUrl}/${encodeURIComponent(e.threadId)}/messages`,{text:e.text,allowWebSearch:e.allowWebSearch,attachments:e.attachments}))}static \u0275fac=function(t){return new(t||i)};static \u0275prov=F({token:i,factory:i.\u0275fac,providedIn:"root"})}return i})();var G=(()=>{class i{consultant_AS=x(Oe);globalError_CS=x(ye);threads_$=l([]);threadsLoading_$=l(!1);threadsError_$=l(null);selectedThread_$=l(null);selectedThreadLoading_$=l(!1);selectedThreadError_$=l(null);sending_$=l(!1);activeThreadId_$=l("");defaults_$=l({providerInstanceId:"",model:""});pickerOptions_$=l([]);pickerOptionsLoading_$=l(!1);loadPickerOptions(){return C(this,null,function*(){this.pickerOptionsLoading_$.set(!0);try{let e=yield this.consultant_AS.getPickerOptions(),t=Array.isArray(e.entries)?e.entries.map(i.parseRegistryEntry).filter(n=>n!==null):[];this.pickerOptions_$.set(t),this.defaults_$.set({providerInstanceId:typeof e.defaults?.providerInstanceId=="string"?e.defaults.providerInstanceId:"",model:typeof e.defaults?.model=="string"?e.defaults.model:""})}catch(e){this.globalError_CS.showError(e,"Consultant_DataService.loadPickerOptions")}finally{this.pickerOptionsLoading_$.set(!1)}})}loadThreads(){return C(this,null,function*(){this.threadsLoading_$.set(!0),this.threadsError_$.set(null);try{let e=yield this.consultant_AS.listThreads(),n=(Array.isArray(e.threads)?e.threads:[]).map(o=>({threadId:typeof o.threadId=="string"?o.threadId:"",label:typeof o.label=="string"?o.label:"",providerInstanceId:typeof o.providerInstanceId=="string"?o.providerInstanceId:"",model:typeof o.model=="string"?o.model:"",messageCount:typeof o.messageCount=="number"?o.messageCount:0,updatedAt:typeof o.updatedAt=="string"?o.updatedAt:""}));this.threads_$.set(n)}catch(e){this.threadsError_$.set(e),this.globalError_CS.showError(e,"Consultant_DataService.loadThreads")}finally{this.threadsLoading_$.set(!1)}})}loadThreadDetail(e){return C(this,null,function*(){this.activeThreadId_$.set(e),this.selectedThreadLoading_$.set(!0),this.selectedThreadError_$.set(null);try{let t=yield this.consultant_AS.getThread(e),n=i.parseThreadDetail(t.thread);this.selectedThread_$.set(n)}catch(t){this.selectedThreadError_$.set(t),this.globalError_CS.showError(t,"Consultant_DataService.loadThreadDetail")}finally{this.selectedThreadLoading_$.set(!1)}})}sendMessage(e){return C(this,null,function*(){this.sending_$.set(!0);try{let n=(yield this.consultant_AS.postMessage(e)).thread;if(i.isPlainRecord(n)){let o=i.parseThreadDetail(n);this.selectedThread_$.set(o)}yield this.loadThreads()}catch(t){throw this.globalError_CS.showError(t,"Consultant_DataService.sendMessage"),t}finally{this.sending_$.set(!1)}})}updateThreadConfig(e){return C(this,null,function*(){try{let t=yield this.consultant_AS.patchThread(e),n=i.parseThreadDetail(t.thread);this.selectedThread_$.set(n),yield this.loadThreads()}catch(t){throw this.globalError_CS.showError(t,"Consultant_DataService.updateThreadConfig"),t}})}createThread(e){return C(this,null,function*(){try{let n=(yield this.consultant_AS.createThread(e)).thread.threadId,o=typeof n=="string"?n:"";return yield this.loadThreads(),o}catch(t){throw this.globalError_CS.showError(t,"Consultant_DataService.createThread"),t}})}deleteThread(e){return C(this,null,function*(){try{yield this.consultant_AS.deleteThread(e),this.activeThreadId_$()===e&&(this.selectedThread_$.set(null),this.activeThreadId_$.set("")),yield this.loadThreads()}catch(t){throw this.globalError_CS.showError(t,"Consultant_DataService.deleteThread"),t}})}static parseThreadDetail(e){let t=typeof e.threadId=="string"?e.threadId:"";if(!t.length)return null;let n=e.messages,o=[];if(Array.isArray(n))for(let p of n){if(!i.isPlainRecord(p))continue;let A=typeof p.id=="string"?p.id:"",Y=p.role;if(Y!=="user"&&Y!=="assistant")continue;let L={id:A,role:Y};typeof p.rawUserText=="string"&&(L.rawUserText=p.rawUserText),typeof p.content=="string"&&(L.content=p.content);let ie=p.userParts;if(Array.isArray(ie)){let oe=[];for(let D of ie){if(!i.isPlainRecord(D))continue;let J=D.type;if(J!=="text"&&J!=="image_url")continue;let Z={type:J};typeof D.text=="string"&&(Z.text=D.text),typeof D.imageUrl=="string"&&(Z.imageUrl=D.imageUrl),oe.push(Z)}L.userParts=oe}o.push(L)}return{threadId:t,label:typeof e.label=="string"?e.label:"",providerInstanceId:typeof e.providerInstanceId=="string"?e.providerInstanceId:"",model:typeof e.model=="string"?e.model:"",messages:o,updatedAt:typeof e.updatedAt=="string"?e.updatedAt:""}}static isPlainRecord(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}static parseRegistryEntry(e){if(!i.isPlainRecord(e))return null;let t=typeof e.provider=="string"?e.provider:"",n=typeof e.modelName=="string"?e.modelName:"";if(!t.length||!n.length)return null;let o=e.capabilities,p=Array.isArray(o)?o.filter(A=>typeof A=="string"):void 0;return{id:typeof e.id=="string"?e.id:"",provider:t,modelName:n,enabled:e.enabled===!0,capabilities:p}}static \u0275fac=function(t){return new(t||i)};static \u0275prov=F({token:i,factory:i.\u0275fac,providedIn:"root"})}return i})();var g=class{static collectSortedProviders(a){let e=new Set;for(let t of a){let n=t.provider.trim();n.length>0&&e.add(n)}return[...e].sort()}static collectSortedModelsForProvider(a,e){let t=e.trim();if(!t.length)return[];let n=[];for(let o of a){let p=o.modelName.trim();o.provider===t&&p.length>0&&n.push(p)}return[...new Set(n)].sort()}};var ze=(i,a)=>a.id;function je(i,a){i&1&&(r(0,"div",5),_(1,"Loading..."),s())}function He(i,a){if(i&1){let e=E();r(0,"app-s-session-info-card",9),h("selected",function(n){m(e);let o=c(2);return u(o.handleSelectThread(n))})("contextMenu",function(n){m(e);let o=c(2);return u(o.handleRowContextMenu(n))}),s()}if(i&2){let e=a.$implicit,t=c(2);f("view",e)("isActive",t.consultant_DS.activeThreadId_$()===e.id)}}function Xe(i,a){if(i&1&&S(0,He,1,2,"app-s-session-info-card",8,ze),i&2){let e=c();$(e.threadRowViews_$())}}function qe(i,a){i&1&&(r(0,"div",6),_(1,"No threads"),s())}function Qe(i,a){if(i&1&&(r(0,"option",16),_(1),s()),i&2){let e=a.$implicit,t=c(2);f("value",e),d(),k(t.providerDisplayLabelsMap_$()[e]||e)}}function Ge(i,a){if(i&1&&(r(0,"option",16),_(1),s()),i&2){let e=a.$implicit;f("value",e),d(),k(e)}}function Ke(i,a){if(i&1){let e=E();r(0,"div",10),h("click",function(){m(e);let n=c();return u(n.handleCloseCreate())}),r(1,"div",11),h("click",function(n){return m(e),u(n.stopPropagation())}),r(2,"h3",12),_(3,"New consultant thread"),s(),r(4,"div",13)(5,"label",14),_(6,"Label (optional)"),s(),r(7,"input",15),h("ngModelChange",function(n){m(e);let o=c();return u(o.newLabel_$.set(n))}),s(),r(8,"label",14),_(9,"Provider"),s(),r(10,"select",15),h("ngModelChange",function(n){m(e);let o=c();return u(o.handleProviderChange(n))}),S(11,Qe,2,2,"option",16,P),s(),r(13,"label",14),_(14,"Model"),s(),r(15,"select",15),h("ngModelChange",function(n){m(e);let o=c();return u(o.newModel_$.set(n))}),S(16,Ge,2,2,"option",16,P),s()(),r(18,"div",17)(19,"button",18),h("click",function(){m(e);let n=c();return u(n.handleCloseCreate())}),_(20," Cancel "),s(),r(21,"button",19),h("click",function(){m(e);let n=c();return u(n.handleCreateThread())}),_(22," Create "),s()()()()}if(i&2){let e=c();d(7),f("ngModel",e.newLabel_$()),d(3),f("ngModel",e.newProvider_$()),d(),$(e.providerOptions_$()),d(4),f("ngModel",e.newModel_$()),d(),$(e.modelsForNewProvider_$()),d(5),f("disabled",e.isCreating_$()||!e.newProvider_$().trim()||!e.newModel_$().trim())}}function Ye(i,a){if(i&1){let e=E();r(0,"div",20),h("click",function(){m(e);let n=c();return u(n.handleCloseCtxMenu())}),s(),r(1,"div",21)(2,"button",22),h("click",function(){m(e);let n=c();return u(n.handleCtxDelete())}),_(3," Delete "),s()()}if(i&2){let e=c();d(),_e("left",e.ctxMenuPos_$().x,"px")("top",e.ctxMenuPos_$().y,"px")}}var Le=(()=>{class i{consultant_DS=x(G);router=x(U);modelRegistry_DS=x(De);isCreateOpen_$=l(!1);newLabel_$=l("");newProvider_$=l("");newModel_$=l("");isCreating_$=l(!1);providerOptions_$=b(()=>g.collectSortedProviders(this.consultant_DS.pickerOptions_$()));modelsForNewProvider_$=b(()=>g.collectSortedModelsForProvider(this.consultant_DS.pickerOptions_$(),this.newProvider_$()));providerDisplayLabelsMap_$=b(()=>{let e=this.modelRegistry_DS.setupConfigForRegistry_$(),t=this.providerOptions_$(),n={};for(let o of t)n[o]==null&&(n[o]=ee.getProviderDisplayLabel(o,e));return n});threadProviderDisplayLabels_$=b(()=>{let e=this.modelRegistry_DS.setupConfigForRegistry_$(),t=new Set;for(let o of this.consultant_DS.threads_$()){let p=o.providerInstanceId.trim();p.length>0&&t.add(p)}for(let o of this.providerOptions_$())t.add(o);let n={};for(let o of t)n[o]=ee.getProviderDisplayLabel(o,e);return n});threadRowViews_$=b(()=>this.consultant_DS.threads_$().map(e=>({id:e.threadId,label:e.label||e.threadId,status:"",statusColorClass:"bg-neutral-600",isArchived:!1,lastActivityAt:e.updatedAt,isRunning:!1})));ctxMenuThread_$=l(null);ctxMenuPos_$=l({x:0,y:0});ngOnInit(){this.consultant_DS.loadThreads(),this.consultant_DS.loadPickerOptions(),this.modelRegistry_DS.loadSetupConfigForRegistry()}handleSelectThread(e){this.router.navigate(["/consultant",e])}handleOpenCreate(){return C(this,null,function*(){yield this.consultant_DS.loadPickerOptions();let e=this.consultant_DS.defaults_$(),t=this.providerOptions_$();if(e.providerInstanceId.length>0&&t.includes(e.providerInstanceId)){let n=g.collectSortedModelsForProvider(this.consultant_DS.pickerOptions_$(),e.providerInstanceId);e.model.length>0&&n.includes(e.model)?(this.newProvider_$.set(e.providerInstanceId),this.newModel_$.set(e.model)):(this.newProvider_$.set(e.providerInstanceId),this.newModel_$.set(n[0]??""))}else{let n=t[0]??"";this.newProvider_$.set(n);let o=g.collectSortedModelsForProvider(this.consultant_DS.pickerOptions_$(),n);this.newModel_$.set(o[0]??"")}this.newLabel_$.set(""),this.isCreateOpen_$.set(!0)})}handleCloseCreate(){this.isCreateOpen_$.set(!1)}handleProviderChange(e){this.newProvider_$.set(e);let t=g.collectSortedModelsForProvider(this.consultant_DS.pickerOptions_$(),e);this.newModel_$.set(t[0]??"")}handleCreateThread(){return C(this,null,function*(){let e=this.newProvider_$().trim(),t=this.newModel_$().trim();if(!(!e.length||!t.length)){this.isCreating_$.set(!0);try{let n=this.newLabel_$().trim(),o=yield this.consultant_DS.createThread({label:n.length>0?n:void 0,providerInstanceId:e,model:t});this.isCreateOpen_$.set(!1),o.length>0&&this.router.navigate(["/consultant",o])}finally{this.isCreating_$.set(!1)}}})}handleRowContextMenu(e){let t=this.consultant_DS.threads_$().find(n=>n.threadId===e.id);t&&(this.ctxMenuThread_$.set(t),this.ctxMenuPos_$.set({x:e.event.clientX,y:e.event.clientY}))}handleCloseCtxMenu(){this.ctxMenuThread_$.set(null)}handleCtxDelete(){return C(this,null,function*(){let e=this.ctxMenuThread_$();if(e){this.handleCloseCtxMenu();try{yield this.consultant_DS.deleteThread(e.threadId),this.router.navigate(["/consultant"])}catch{}}})}static \u0275fac=function(t){return new(t||i)};static \u0275cmp=I({type:i,selectors:[["app-ccap-consultant-dashboard"]],hostAttrs:[1,"flex","flex-col","flex-1","min-h-0","overflow-hidden"],decls:12,vars:3,consts:[[1,"flex","flex-col","flex-1","min-h-0"],[1,"shrink-0","p-2","border-b","border-neonDefault","flex","items-center","gap-2"],[1,"text-xs","font-semibold","text-neutral-300","flex-1","truncate"],["type","button",1,"px-2","py-1","text-xs","border","border-neonDefault","text-neutral-300","hover:bg-neutral-700","rounded","transition-colors",3,"click"],[1,"flex-1","overflow-y-auto"],[1,"p-3","text-xs","text-neutral-500"],[1,"p-4","text-center","text-neutral-500","text-xs"],[1,"fixed","inset-0","z-40","flex","items-center","justify-center","bg-black/60","p-4"],[3,"view","isActive"],[3,"selected","contextMenu","view","isActive"],[1,"fixed","inset-0","z-40","flex","items-center","justify-center","bg-black/60","p-4",3,"click"],[1,"w-full","max-w-md","rounded-lg","border","border-neonDefault","bg-neutral-900","p-4","shadow-xl",3,"click"],[1,"text-sm","font-semibold","text-neutral-200","mb-3"],[1,"flex","flex-col","gap-2","text-xs"],[1,"text-neutral-400"],[1,"w-full","px-2","py-1","rounded","bg-neutral-800","border","border-neutral-600","text-neutral-200",3,"ngModelChange","ngModel"],[3,"value"],[1,"flex","justify-end","gap-2","mt-4"],["type","button",1,"px-2","py-1","text-xs","border","border-neutral-600","text-neutral-400","rounded",3,"click"],["type","button",1,"px-2","py-1","text-xs","border","border-neonDefault","text-neutral-200","rounded","disabled:opacity-40",3,"click","disabled"],[1,"fixed","inset-0","z-40",3,"click"],[1,"fixed","z-50","min-w-[140px]","bg-neutral-900","border","border-neutral-700","rounded-lg","shadow-xl","py-1","text-xs"],[1,"w-full","text-left","px-3","py-1.5","text-red-400","hover:bg-red-500/10","transition-colors",3,"click"]],template:function(t,n){if(t&1&&(r(0,"div",0)(1,"div",1)(2,"span",2),_(3,"Consultant"),s(),r(4,"button",3),h("click",function(){return n.handleOpenCreate()}),_(5," + New "),s()(),r(6,"div",4),M(7,je,2,0,"div",5)(8,Xe,2,0)(9,qe,2,0,"div",6),s()(),M(10,Ke,23,4,"div",7)(11,Ye,4,4)),t&2){let o;d(7),y(n.consultant_DS.threadsLoading_$()?7:n.threadRowViews_$().length?8:9),d(3),y(n.isCreateOpen_$()?10:-1),d(),y((o=n.ctxMenuThread_$())?11:-1,o)}},dependencies:[j,H,N,z,W,B,Me],encapsulation:2})}return i})();var We=(()=>{class i{sidebarWidth_$=l(320);isSidebarOpen_$=l(!0);isResizing_$=l(!1);ngOnInit(){let e=T.loadPanelWidth("sidebar",320);this.sidebarWidth_$.set(Math.max(200,Math.min(600,e))),this.isSidebarOpen_$.set(T.loadPanelOpen("sidebar",!0))}handleSidebarResizeStart(e){let t=e.clientX,n=this.sidebarWidth_$();this.isResizing_$.set(!0),Ve.attachUntilPointerUp({startEvent:e,onMove:o=>{let p=o.clientX-t,A=Math.max(200,Math.min(600,n+p));this.sidebarWidth_$.set(A)},onEnd:()=>{this.isResizing_$.set(!1),T.savePanelWidth("sidebar",this.sidebarWidth_$())}})}handleToggleSidebar(){this.isSidebarOpen_$.update(e=>!e),T.savePanelOpen("sidebar",this.isSidebarOpen_$())}static \u0275fac=function(t){return new(t||i)};static \u0275cmp=I({type:i,selectors:[["app-ccap-consultant-shell"]],hostAttrs:[1,"flex","min-h-0","w-full","flex-1","flex-col","overflow-hidden"],decls:14,vars:9,consts:[[1,"flex","min-h-0","w-full","flex-1","flex-col","overflow-hidden"],["sSessionToolbarLeft","",1,"flex","items-center","gap-1","min-w-0"],["type","button",1,"px-2","py-1","text-xs","border","border-neonDefault","text-neutral-300","hover:bg-neutral-700","rounded","transition-colors","flex","items-center","gap-1","shrink-0",3,"click"],["viewBox","0 0 24 24","fill","none","stroke","currentColor","stroke-width","2","stroke-linecap","round","stroke-linejoin","round",1,"w-3","h-3","shrink-0","transition-transform","duration-150"],["points","6 9 12 15 18 9"],["sSessionToolbarCenter","",1,"min-w-0"],["sSessionToolbarRight","",1,"min-w-0"],[3,"sidebarResizeStart","isSidebarOpen","sidebarWidthPx","isResizing"],["sSessionShellSidebar","",1,"flex","flex-col","overflow-hidden","h-full"],["sSessionShellMain","",1,"flex","min-h-0","flex-1","flex-col","overflow-hidden","[&>router-outlet]:contents"]],template:function(t,n){t&1&&(r(0,"div",0)(1,"app-s-session-shell-toolbar")(2,"div",1)(3,"button",2),h("click",function(){return n.handleToggleSidebar()}),le(),r(4,"svg",3),w(5,"polyline",4),s(),_(6," Consultant "),s()(),de(),w(7,"div",5)(8,"div",6),s(),r(9,"app-s-resizable-session-shell-layout",7),h("sidebarResizeStart",function(p){return n.handleSidebarResizeStart(p)}),r(10,"div",8),w(11,"app-ccap-consultant-dashboard"),s(),r(12,"div",9),w(13,"router-outlet"),s()()()),t&2&&(R("select-none",n.isResizing_$()),d(4),R("rotate-90",n.isSidebarOpen_$())("-rotate-90",!n.isSidebarOpen_$()),d(5),f("isSidebarOpen",n.isSidebarOpen_$())("sidebarWidthPx",n.sidebarWidth_$())("isResizing",n.isResizing_$()))},dependencies:[ge,Pe,Ee,Le],encapsulation:2})}return i})();var K=class i{static fromMessage(a){let e=a.role==="user",t=e?i.buildUserBodyText(a):a.content??"";return{listKey:a.id,kind:e?te.userPrompt:te.assistant,bodyText:t,isUserAligned:e,flags:{showCopy:!0,showRawInfo:!1,useEditDiffForExpandable:!1}}}static buildUserBodyText(a){let e=(a.rawUserText??"").trim();return(a.userParts?.length??0)>1?e.length>0?`${e}
|
|
2
|
-
[attachments]`:"[attachments]":e.length>0?e:a.content??""}};var Ze=(i,a)=>a.listKey;function et(i,a){i&1&&(r(0,"div",0),_(1," Select a thread or create a new consultant chat. "),s())}function tt(i,a){i&1&&(r(0,"div",1),_(1,"Loading\u2026"),s())}function nt(i,a){if(i&1&&(r(0,"option",8),_(1),s()),i&2){let e=a.$implicit;f("value",e),d(),k(e)}}function it(i,a){if(i&1&&(r(0,"option",8),_(1),s()),i&2){let e=a.$implicit;f("value",e),d(),k(e)}}function ot(i,a){if(i&1&&(r(0,"div",18),w(1,"app-s-agent-console-message-bubble",19),s()),i&2){let e=a.$implicit;R("self-end",e.isUserAligned===!0)("self-start",e.isUserAligned!==!0),d(),f("view",e)}}function rt(i,a){if(i&1){let e=E();r(0,"app-s-session-chat-column-layout")(1,"div",2)(2,"div",3)(3,"div",4)(4,"span",5),_(5,"Label"),s(),r(6,"input",6),h("ngModelChange",function(n){m(e);let o=c(2);return u(o.localLabel_$.set(n))}),s()(),r(7,"div",4)(8,"span",5),_(9,"Provider"),s(),r(10,"select",7),h("ngModelChange",function(n){m(e);let o=c(2);return u(o.handleProviderChange(n))}),S(11,nt,2,2,"option",8,P),s()(),r(13,"div",4)(14,"span",5),_(15,"Model"),s(),r(16,"select",6),h("ngModelChange",function(n){m(e);let o=c(2);return u(o.localModel_$.set(n))}),S(17,it,2,2,"option",8,P),s()(),r(19,"button",9),h("click",function(){m(e);let n=c(2);return u(n.handleApplyConfig())}),_(20," Apply "),s(),r(21,"button",10),h("click",function(){m(e);let n=c(2);return u(n.handleDeleteThread())}),_(22," Delete "),s()()(),r(23,"div",11),S(24,ot,2,5,"div",12,Ze),s(),r(26,"div",13)(27,"label",14)(28,"input",15),h("ngModelChange",function(n){m(e);let o=c(2);return u(o.allowWebSearch_$.set(n))}),s(),_(29," Allow web search (Brave) "),s(),r(30,"app-s-session-input",16),h("draftTextChange",function(n){m(e);let o=c(2);return u(o.composerText_$.set(n))})("sendRequested",function(){m(e);let n=c(2);return u(n.handleSend())})("attachmentsChanged",function(n){m(e);let o=c(2);return u(o.handleAttachmentsChanged(n))}),r(31,"app-ccap-voice-record-button",17),h("transcriptSegmentReady",function(n){m(e);let o=c(2);return u(o.handleVoiceSegment(n))}),s()()()()}if(i&2){let e=c(2);d(6),f("ngModel",e.localLabel_$()),d(4),f("ngModel",e.localProvider_$()),d(),$(e.providerOptions_$()),d(5),f("ngModel",e.localModel_$()),d(),$(e.modelsForSelectedProvider_$()),d(7),$(e.consultantBubbleViews_$()),d(4),f("ngModel",e.allowWebSearch_$()),d(2),f("draftText",e.composerText_$())("isSending",e.consultant_DS.sending_$())("enableAttachments",!0)("textareaRows",3),d(),f("compactLayout",!0)}}function at(i,a){i&1&&(r(0,"div",0),_(1," Thread not loaded. "),s())}function st(i,a){if(i&1&&M(0,rt,32,9,"app-s-session-chat-column-layout")(1,at,2,0,"div",0),i&2){let e=c();y(e.consultant_DS.selectedThread_$()?0:1)}}var ne=(()=>{class i extends we{consultant_DS=x(G);route=x(xe);router=x(U);voiceInputUi_DS=x(Ie);sessionInputRef;composerText_$=l("");allowWebSearch_$=l(!1);localLabel_$=l("");localProvider_$=l("");localModel_$=l("");providerOptions_$=b(()=>g.collectSortedProviders(this.consultant_DS.pickerOptions_$()));modelsForSelectedProvider_$=b(()=>g.collectSortedModelsForProvider(this.consultant_DS.pickerOptions_$(),this.localProvider_$()));consultantBubbleViews_$=b(()=>{let e=this.consultant_DS.selectedThread_$();return e?e.messages.map(t=>K.fromMessage(t)):[]});pendingAttachments=[];constructor(){super(),this.addSubscription(this.route.paramMap.pipe(re(e=>e.get("threadId")??"")).subscribe(e=>{e.length>0?this.consultant_DS.loadThreadDetail(e):(this.consultant_DS.selectedThread_$.set(null),this.consultant_DS.activeThreadId_$.set(""))})),ue(()=>{let e=this.consultant_DS.selectedThread_$();e!=null&&(this.localLabel_$.set(e.label),this.localProvider_$.set(e.providerInstanceId),this.localModel_$.set(e.model))},{allowSignalWrites:!0}),this.consultant_DS.loadPickerOptions()}ngOnDestroy(){super.ngOnDestroy()}handleProviderChange(e){this.localProvider_$.set(e);let t=g.collectSortedModelsForProvider(this.consultant_DS.pickerOptions_$(),e),n=this.localModel_$();t.includes(n)||this.localModel_$.set(t[0]??"")}handleApplyConfig(){return C(this,null,function*(){let e=this.consultant_DS.activeThreadId_$();e.length&&(yield this.consultant_DS.updateThreadConfig({threadId:e,label:this.localLabel_$(),providerInstanceId:this.localProvider_$(),model:this.localModel_$()}))})}handleDeleteThread(){return C(this,null,function*(){let e=this.consultant_DS.activeThreadId_$();e.length&&(yield this.consultant_DS.deleteThread(e),this.router.navigate(["/consultant"]))})}handleAttachmentsChanged(e){this.pendingAttachments=e}handleVoiceSegment(e){let t=e.text.trim();if(!t.length)return;let n=this.composerText_$().trim();this.composerText_$.set(n.length>0?`${n} ${t}`:t),this.voiceInputUi_DS.autoSendAfterVoice_$()&&e.isFinal&&this.handleSend()}handleSend(){return C(this,null,function*(){let e=this.consultant_DS.activeThreadId_$();if(!e.length)return;let t=this.composerText_$().trim(),n=[...this.pendingAttachments];if(!t.length&&!n.length)return;let o=n.map(p=>({kind:p.isImage?"image":"textDocument",mimeType:p.mimeType,fileName:p.fileName,dataBase64:p.base64}));yield this.consultant_DS.sendMessage({threadId:e,text:t,allowWebSearch:this.allowWebSearch_$(),attachments:o}),this.composerText_$.set(""),this.pendingAttachments=[],this.sessionInputRef?.clearAttachments()})}static \u0275fac=function(t){return new(t||i)};static \u0275cmp=I({type:i,selectors:[["app-ccap-consultant-detail"]],viewQuery:function(t,n){if(t&1&&pe(q,5),t&2){let o;he(o=me())&&(n.sessionInputRef=o.first)}},hostAttrs:[1,"flex","flex-col","flex-1","min-h-0","overflow-hidden"],features:[ce],decls:3,vars:1,consts:[[1,"flex","flex-1","items-center","justify-center","p-4","text-xs","text-neutral-500"],[1,"flex","flex-1","items-center","justify-center","text-xs","text-neutral-500"],["sChatColumnHeader","",1,"flex","shrink-0","flex-col","gap-2","border-b","border-neonDefault","bg-ccapSurface","p-2"],[1,"flex","flex-wrap","items-end","gap-2"],[1,"flex","flex-col","gap-0.5"],[1,"text-[10px]","text-neutral-500"],[1,"w-40","rounded","border","border-neutral-600","bg-neutral-800","px-2","py-1","text-xs","text-neutral-200",3,"ngModelChange","ngModel"],[1,"w-36","rounded","border","border-neutral-600","bg-neutral-800","px-2","py-1","text-xs","text-neutral-200",3,"ngModelChange","ngModel"],[3,"value"],["type","button",1,"rounded","border","border-neonDefault","px-2","py-1","text-xs","text-neutral-300",3,"click"],["type","button",1,"ml-auto","rounded","border","border-red-900","px-2","py-1","text-xs","text-red-300",3,"click"],["sChatColumnScroll","",1,"flex","flex-col","gap-3","p-3"],[1,"max-w-[85%]",3,"self-end","self-start"],["sChatColumnComposer","",1,"flex","flex-col"],[1,"flex","cursor-pointer","items-center","gap-2","px-2","pt-1","text-[10px]","text-neutral-400"],["type","checkbox",3,"ngModelChange","ngModel"],["acceptedFileTypes","image/png,image/jpeg,image/webp,image/gif,.txt,.md,text/plain,text/markdown","placeholder","Message\u2026",3,"draftTextChange","sendRequested","attachmentsChanged","draftText","isSending","enableAttachments","textareaRows"],["sInputTextareaAccessory","",3,"transcriptSegmentReady","compactLayout"],[1,"max-w-[85%]"],[3,"view"]],template:function(t,n){t&1&&M(0,et,2,0,"div",0)(1,tt,2,0,"div",1)(2,st,2,1),t&2&&y(n.consultant_DS.activeThreadId_$()?n.consultant_DS.selectedThreadLoading_$()?1:2:0)},dependencies:[j,H,N,ve,z,W,B,X,q,ke,Ae],encapsulation:2})}return i})();var lt=[{path:"",component:We,children:[{path:"",component:ne},{path:":threadId",component:ne}]}],xn=(()=>{class i{static \u0275fac=function(t){return new(t||i)};static \u0275mod=se({type:i});static \u0275inj=ae({imports:[fe,Se,be.forChild(lt),Te,X,Re]})}return i})();export{xn as Consultant_Module};
|
|
3
|
-
//# sourceMappingURL=consultant.module-WUUVSVHL.js.map
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import{a as _e,b as Ye}from"./chunk-DURLBTAJ.js";import{a as H,b as ee,c as te,d as Je}from"./chunk-HLNT234H.js";import"./chunk-EGRHWZRV.js";import{a as Ge}from"./chunk-TP2634XD.js";import{a as Ke}from"./chunk-4JKJRGJX.js";import{a as B}from"./chunk-Q2PKIGLB.js";import{a as ce}from"./chunk-YRVQSWSZ.js";import{a as Fe}from"./chunk-TOFOK5W7.js";import{a as We,b as J}from"./chunk-IINV7GMO.js";import"./chunk-QPEW5PI4.js";import{a as Xe}from"./chunk-SQWHJTFE.js";import{b as k}from"./chunk-GADEZIXI.js";import"./chunk-2EMFCVYO.js";import{a as G}from"./chunk-5C3KCWYF.js";import"./chunk-OLK5MJ4J.js";import"./chunk-OUBNMT7L.js";import{g as Qe}from"./chunk-7HSUCNW5.js";import"./chunk-CRYF37M7.js";import{a as qe}from"./chunk-7JUIBZEE.js";import{a as Ne,b as ze,c as Be}from"./chunk-C7XPBJTG.js";import{b as V,f as He,g as je}from"./chunk-JMZKJLUE.js";import"./chunk-WPHEQXWB.js";import{c as Ue}from"./chunk-VGTXKD6D.js";import{a as de,b as Y,c as Z}from"./chunk-DJVWZQNB.js";import"./chunk-MZLFEWAN.js";import"./chunk-OEEQNIJG.js";import"./chunk-Q2NVIOCY.js";import"./chunk-U2EBQMSE.js";import"./chunk-SYCUR4MY.js";import"./chunk-R5WCLLO5.js";import"./chunk-V3VQWJQL.js";import"./chunk-6GSTJE3R.js";import"./chunk-JZHYGU3K.js";import"./chunk-ZBTWQZNB.js";import"./chunk-FLAJXIYW.js";import{o as Ae,p as Me,v as Le}from"./chunk-EO4DNTT4.js";import{k as K}from"./chunk-KYVIZZWW.js";import{a as w}from"./chunk-5UPNU54P.js";import{j as Re}from"./chunk-7SAFEFWU.js";import{N as Ve}from"./chunk-SLSTIBOT.js";import{$a as D,Aa as ae,Ba as re,C as v,Cb as Ee,D as A,E as xe,Eb as X,Fa as l,Fb as Te,G as F,Ga as O,Gb as Oe,Ha as $,Hb as ke,Ia as ye,J as _,Ja as $e,K as p,Kb as Pe,L as Se,M as he,N as fe,Pa as j,Qa as Q,Ra as L,T as Ce,Ua as le,Va as Ie,W as ge,Z as c,_ as ve,aa as m,ab as E,ca as be,da as h,ga as f,ha as we,hb as T,ia as oe,ja as M,k as P,la as u,mb as N,oa as W,pa as U,qa as s,ra as o,sa as I,ua as y,ub as De,va as x,wa as d,y as ue,z as me,za as se}from"./chunk-TBMJSIBB.js";var b="ccap-ocSession",S=class{static saveStatusFilter(a){w.writeString(`${b}:statusFilter`,a)}static loadStatusFilter(){return w.readString(`${b}:statusFilter`)??""}static saveLastWorkspacePath(a){w.writeString(`${b}:lastWorkspacePath`,a)}static loadLastWorkspacePath(){return w.readString(`${b}:lastWorkspacePath`)??""}static saveLastLabel(a){w.writeString(`${b}:lastLabel`,a)}static loadLastLabel(){return w.readString(`${b}:lastLabel`)??""}static saveLastAgentName(a){w.writeString(`${b}:lastAgentName`,a)}static loadLastAgentName(){return w.readString(`${b}:lastAgentName`)??""}static savePromptDraft(a,e){H.saveDraft(b,a,e)}static loadPromptDraft(a){return H.loadDraft(b,a)}static clearPromptDraft(a){H.clearDraft(b,a)}static hasPromptDraft(a){return H.hasDraft(b,a)}static savePanelOpen(a,e){w.writeBoolean(`${b}:panelOpen:${a}`,e)}static loadPanelOpen(a,e){return w.readBoolean(`${b}:panelOpen:${a}`,e)}static savePanelWidth(a,e){w.writeNumber(`${b}:panelWidth:${a}`,e)}static loadPanelWidth(a,e){return w.readNumber(`${b}:panelWidth:${a}`,e)}static saveSessionMode(a){w.writeString(`${b}:sessionMode`,a)}static loadSessionMode(){return w.readString(`${b}:sessionMode`)??"normal"}static saveSessionEffort(a){w.writeString(`${b}:sessionEffort`,a)}static loadSessionEffort(){return w.readString(`${b}:sessionEffort`)??"high"}static saveShowArchived(a){w.writeBoolean(`${b}:showArchived`,a)}static loadShowArchived(){return w.readBoolean(`${b}:showArchived`,!1)}static saveLastSessionId(a){w.writeString(`${b}:lastSessionId`,a)}static loadLastSessionId(){return w.readString(`${b}:lastSessionId`)??""}static saveSelectedInstanceId(a){w.writeString(`${b}:selectedInstanceId`,a)}static loadSelectedInstanceId(){return w.readString(`${b}:selectedInstanceId`)??""}};var z=(()=>{class n{oc_DS=v(k);isTimelinePanelOpen_$=m(S.loadPanelOpen("timeline",!1));isMetadataPanelOpen_$=m(S.loadPanelOpen("metadata",!1));isStopping_$=m(!1);handleToggleTimeline(){let e=!this.isTimelinePanelOpen_$();this.isTimelinePanelOpen_$.set(e),S.savePanelOpen("timeline",e)}handleToggleMetadata(){let e=!this.isMetadataPanelOpen_$();this.isMetadataPanelOpen_$.set(e),S.savePanelOpen("metadata",e)}handleStopExecution(){return P(this,null,function*(){let e=this.oc_DS.selectedSession_$();if(!e||this.isStopping_$())return;let i=e.session?.sessionId??"";if(i){this.isStopping_$.set(!0);try{yield this.oc_DS.stopExecution({sessionId:i})}catch{}finally{this.isStopping_$.set(!1)}}})}static \u0275fac=function(i){return new(i||n)};static \u0275prov=ue({token:n,factory:n.\u0275fac,providedIn:"root"})}return n})();var ft=(n,a)=>a.instanceId;function Ct(n,a){if(n&1&&(s(0,"option",11),l(1),o()),n&2){let e=a.$implicit;f("value",e.instanceId),c(),$e(" ",e.label||"Unnamed"," \u2014 ",e.gatewayUrl,"",e.pairingStatus==="paired"?" (paired)":e.pairingStatus==="pending"?" (pending)":" (not paired)"," ")}}function gt(n,a){if(n&1){let e=y();s(0,"select",10),x("change",function(t){_(e);let r=d(2);return p(r.handleInstanceChange(t.target.value))}),W(1,Ct,2,4,"option",11,ft),o()}if(n&2){let e=d(2);f("value",e.selectedInstanceId_$()),c(),U(e.ocRegistry_$())}}function vt(n,a){n&1&&(s(0,"div",9),l(1," Nincs regisztr\xE1lt OpenClaw instance \u2014 hozz l\xE9tre egyet a Settings oldalon. "),o())}function bt(n,a){if(n&1&&h(0,gt,3,1,"select",8)(1,vt,2,0,"div",9),n&2){let e=d();u(e.ocRegistry_$().length?0:1)}}function wt(n,a){n&1&&(s(0,"div",4),l(1,"Bet\xF6lt\xE9s\u2026"),o())}function yt(n,a){n&1&&(s(0,"a",30)(1,"div",32),l(2,"P\xE1ros\xEDt\xE1s sz\xFCks\xE9ges"),o(),s(3,"p",33),l(4," Ez az OpenClaw instance m\xE9g nincs p\xE1ros\xEDtva. A session-\xF6k megtekint\xE9s\xE9hez el\u0151bb p\xE1ros\xEDtsd a gateway-t. "),o(),s(5,"p",34),l(6," Kattints ide a be\xE1ll\xEDt\xE1sokhoz \u2192 "),s(7,"span",35),l(8,"Pair"),o()()())}function $t(n,a){if(n&1&&I(0,"app-ccap-error-display",31),n&2){let e=d(3);f("error",e.ocSession_DS.sessionsLoadError_$())}}function It(n,a){if(n&1&&(s(0,"div",25),h(1,yt,9,0,"a",30)(2,$t,1,1,"app-ccap-error-display",31),o()),n&2){let e=d(2);c(),u(e.isPairingRequiredError()?1:2)}}function Dt(n,a){n&1&&(s(0,"div",27),l(1," Loading\u2026 "),o())}function Et(n,a){if(n&1){let e=y();s(0,"div",28)(1,"span",36),l(2,"No sessions found"),o(),s(3,"button",37),x("click",function(){_(e);let t=d(2);return p(t.handleOpenCreateDialog())}),l(4," Create first session "),o()()}}function Tt(n,a){if(n&1){let e=y();s(0,"app-s-session-select",38),x("selected",function(t){_(e);let r=d(2);return p(r.handleSelectSession(t))})("contextMenu",function(t){_(e);let r=d(2);return p(r.handleRowContextMenu(t))})("scheduleIndicatorClicked",function(t){_(e);let r=d(2);return p(r.handleScheduleIndicatorClick(t))})("coordinatorIndicatorClicked",function(t){_(e);let r=d(2);return p(r.handleCoordinatorIndicatorClick(t))}),o()}if(n&2){let e=d(2);f("rows",e.sessionRowViews_$())("activeId",e.ocSession_DS.activeSessionId_$())("showWorkspacePath",!0)("showPromptCount",!0)("hideSearch",!0)}}function Ot(n,a){if(n&1){let e=y();s(0,"div",12)(1,"input",13),x("input",function(t){_(e);let r=d();return p(r.searchQuery_$.set(t.target.value))}),o(),s(2,"div",14)(3,"select",15),x("change",function(t){_(e);let r=d();return p(r.handleStatusFilterChange(t.target.value))}),s(4,"option",16),l(5,"All statuses"),o(),s(6,"option",17),l(7,"Waiting"),o(),s(8,"option",18),l(9,"Running"),o(),s(10,"option",19),l(11,"Connecting"),o(),s(12,"option",20),l(13,"Disconnected"),o(),s(14,"option",21),l(15,"Errored"),o(),s(16,"option",22),l(17,"Completed"),o(),s(18,"option",23),l(19,"Terminated"),o()(),s(20,"button",24),x("click",function(){_(e);let t=d();return p(t.handleToggleShowArchived())}),l(21," Arch "),o()()(),h(22,It,3,1,"div",25),s(23,"div",26),h(24,Dt,2,0,"div",27)(25,Et,5,0,"div",28)(26,Tt,1,5,"app-s-session-select",29),o()}if(n&2){let e=d();c(),f("value",e.searchQuery_$()),c(2),f("value",e.statusFilter_$()),c(17),M(e.showArchived_$()?"border-ccapAccent/60 text-ccapAccent/80 bg-ccapAccent/10":"border-neutral-700 text-neutral-500 hover:border-neutral-600"),c(2),u(e.ocSession_DS.sessionsLoadError_$()?22:-1),c(2),u(e.ocSession_DS.sessionsLoading_$()?24:!e.filteredSessions_$().length&&!e.ocSession_DS.sessionsLoadError_$()?25:26)}}function kt(n,a){n&1&&(s(0,"div",5)(1,"span",36),l(2,"V\xE1lassz OpenClaw instance-t a session-\xF6k megtekint\xE9s\xE9hez."),o()())}function Pt(n,a){if(n&1&&(s(0,"div",42),l(1," Instance: "),s(2,"span",51),l(3),o()()),n&2){let e=d(2);c(3),O(e.selectedInstance.label||e.selectedInstance.gatewayUrl)}}function At(n,a){if(n&1){let e=y();s(0,"div",39),x("click",function(){_(e);let t=d();return p(t.handleCloseCreateDialog())}),s(1,"div",40),x("click",function(t){return _(e),p(t.stopPropagation())}),s(2,"div",41),l(3,"New OC Session"),o(),h(4,Pt,4,1,"div",42),s(5,"div",43)(6,"div")(7,"label",44),l(8,"Workspace Path *"),o(),s(9,"input",45),x("input",function(t){_(e);let r=d();return p(r.newSessionWorkspacePath_$.set(t.target.value))}),o()(),s(10,"div")(11,"label",44),l(12,"Label"),o(),s(13,"input",46),x("input",function(t){_(e);let r=d();return p(r.newSessionLabel_$.set(t.target.value))}),o()(),s(14,"div")(15,"label",44),l(16,"Agent Name"),o(),s(17,"input",47),x("input",function(t){_(e);let r=d();return p(r.newSessionAgentName_$.set(t.target.value))}),o()()(),s(18,"div",48)(19,"button",49),x("click",function(){_(e);let t=d();return p(t.handleCloseCreateDialog())}),l(20," Cancel "),o(),s(21,"button",50),x("click",function(){_(e);let t=d();return p(t.handleCreateSession())}),l(22),o()()()()}if(n&2){let e=d();c(4),u(e.selectedInstance?4:-1),c(5),f("value",e.newSessionWorkspacePath_$()),c(4),f("value",e.newSessionLabel_$()),c(4),f("value",e.newSessionAgentName_$()),c(4),f("disabled",!e.newSessionWorkspacePath_$().trim()||e.isCreating_$()),c(),$(" ",e.isCreating_$()?"Creating\u2026":"Create"," ")}}function Mt(n,a){n&1&&l(0," \u2713 Link copied ")}function Lt(n,a){n&1&&l(0," Copy failed ")}function Vt(n,a){n&1&&l(0," Copy link ")}function Rt(n,a){if(n&1){let e=y();s(0,"div",52),x("click",function(){_(e);let t=d();return p(t.handleCloseCtxMenu())}),o(),s(1,"div",53)(2,"button",54),x("click",function(){_(e);let t=d();return p(t.handleCtxCopyLink())}),h(3,Mt,1,0)(4,Lt,1,0)(5,Vt,1,0),o(),s(6,"button",55),x("click",function(){_(e);let t=d();return p(t.handleCtxToggleArchive())}),l(7),o()()}if(n&2){let e,i=d();c(),we("left",i.ctxMenuPos_$().x,"px")("top",i.ctxMenuPos_$().y,"px"),c(),f("disabled",i.linkCopyState_$()!=="idle"),c(),u((e=i.linkCopyState_$())==="copied"?3:e==="failed"?4:5),c(4),$(" ",a.isArchived?"Unarchive":"Archive"," ")}}var Ze=(()=>{class n{ocSession_DS=v(k);peiContext_DS=v(G);settingsGeneral_DS=v(Ve);openclawRegistry_DS=v(Xe);scheduledJobs_DS=v(Ke);coordinator_DS=v(Ge);router=v(Oe);globalError_CS=v(Re);statusFilter_$=m("");searchQuery_$=m("");isCreateDialogOpen_$=m(!1);schedulePopupSessionId_$=m(null);coordinatorPopupSessionId_$=m(null);newSessionWorkspacePath_$=m("");newSessionLabel_$=m("");newSessionAgentName_$=m("");isCreating_$=m(!1);showArchived_$=m(!1);ocRegistry_$=m([]);selectedInstanceId_$=m("");registryLoaded_$=m(!1);sessionSelected=Ce();ngOnInit(){let e=S.loadStatusFilter();e&&this.statusFilter_$.set(e);let i=S.loadShowArchived();this.showArchived_$.set(i),this.settingsGeneral_DS.loadDefaultWorkspacePath(),this.scheduledJobs_DS.loadAll(),this.coordinator_DS.loadAllCoordinatorsForManagementPage(),this.openclawRegistry_DS.load().then(()=>{let t=this.openclawRegistry_DS.section_$().form.instances;this.ocRegistry_$.set(t),this.registryLoaded_$.set(!0);let r=S.loadSelectedInstanceId();t.some(g=>g.instanceId===r)?this.selectInstance(r):t.length>0&&this.selectInstance(t[0].instanceId)}).catch(()=>{this.registryLoaded_$.set(!0)})}get selectedInstance(){let e=this.selectedInstanceId_$();return this.ocRegistry_$().find(i=>i.instanceId===e)}selectInstance(e){this.selectedInstanceId_$.set(e),S.saveSelectedInstanceId(e);let i=this.ocRegistry_$().find(t=>t.instanceId===e);i&&(this.ocSession_DS.activeInstanceId_$.set(e),this.ocSession_DS.setGatewayFilterOnly(i.gatewayUrl),this.loadSessionsForCurrentFilters())}handleInstanceChange(e){e&&this.selectInstance(e)}handleSelectSession(e){let i=this.peiContext_DS.activeCcapId_$(),t=i?["/oc-session",i,e]:["/oc-session",e];this.router.navigate(t),this.sessionSelected.emit()}handleStatusFilterChange(e){this.statusFilter_$.set(e),S.saveStatusFilter(e),this.loadSessionsForCurrentFilters()}handleToggleShowArchived(){let e=!this.showArchived_$();this.showArchived_$.set(e),S.saveShowArchived(e),this.loadSessionsForCurrentFilters()}handleOpenCreateDialog(){let e=S.loadLastWorkspacePath();this.newSessionWorkspacePath_$.set(e||this.settingsGeneral_DS.defaultWorkspacePath_$()),this.newSessionLabel_$.set(S.loadLastLabel()),this.newSessionAgentName_$.set(S.loadLastAgentName()),this.isCreateDialogOpen_$.set(!0)}handleCloseCreateDialog(){this.isCreateDialogOpen_$.set(!1)}handleCreateSession(){return P(this,null,function*(){let e=this.newSessionWorkspacePath_$().trim();if(!e)return;let i=this.selectedInstance;if(i){this.isCreating_$.set(!0);try{S.saveLastWorkspacePath(e),S.saveLastLabel(this.newSessionLabel_$().trim()),S.saveLastAgentName(this.newSessionAgentName_$().trim());let t=yield this.ocSession_DS.createSession({workspacePath:e,label:this.newSessionLabel_$().trim()||void 0,gatewayUrl:i.gatewayUrl,openclawAgentName:this.newSessionAgentName_$().trim()||void 0});if(this.isCreateDialogOpen_$.set(!1),t){let r=this.peiContext_DS.activeCcapId_$(),C=r?["/oc-session",r,t]:["/oc-session",t];this.router.navigate(C)}}catch{}finally{this.isCreating_$.set(!1)}}})}filteredSessions_$=T(()=>{let e=this.searchQuery_$();return e.trim()?this.ocSession_DS.sessions_$().filter(i=>de.includesText(i.label,e)||de.includesText(i.workspacePath,e)):this.ocSession_DS.sessions_$()});sessionRowViews_$=T(()=>{let e=this.scheduledJobs_DS.scheduledSessionIds_$(),i=this.coordinator_DS.coordinatedSessionIds_$();return this.filteredSessions_$().map(t=>({id:t.sessionId,label:t.label||t.sessionId,status:t.status,statusColorClass:ce.resolve(t.status),workspacePath:t.workspacePath,isArchived:!!t.isArchived,lastActivityAt:t.lastActivityAt,promptCount:t.promptCount,isRunning:ce.isRunning(t.status),hasSchedule:e.has(t.sessionId),hasCoordinator:i.has(t.sessionId),hasDraft:S.hasPromptDraft(t.sessionId)}))});isPairingRequiredError(){let e=this.ocSession_DS.sessionsLoadError_$();if(!e||typeof e!="object")return!1;let t=e.error;if(t&&typeof t=="object"){let r=t,C=r._errorCode??r.errorCode??r.code,g=r._message??r.message;if(C==="NOT_PAIRED"||C==="PAIRING_REQUIRED"||typeof g=="string"&&g.toLowerCase().includes("pairing required"))return!0}return!1}ctxMenuSession_$=m(null);ctxMenuPos_$=m({x:0,y:0});handleRowContextMenu(e){let i=this.filteredSessions_$().find(t=>t.sessionId===e.id);i&&(this.ctxMenuSession_$.set(i),this.ctxMenuPos_$.set({x:e.event.clientX,y:e.event.clientY}))}linkCopyState_$=m("idle");handleCloseCtxMenu(){this.ctxMenuSession_$.set(null),this.linkCopyState_$.set("idle")}handleCtxCopyLink(){return P(this,null,function*(){let e=this.ctxMenuSession_$();if(!e?.sessionId)return;let i=this.peiContext_DS.activeCcapId_$(),t=i?`/oc-session/${i}/${e.sessionId}`:`/oc-session/${e.sessionId}`,r=`${window.location.origin}${t}`,C=yield this.globalError_CS.copyToClipboard(r);this.linkCopyState_$.set(C.ok?"copied":"failed"),setTimeout(()=>{this.handleCloseCtxMenu()},700)})}handleScheduleIndicatorClick(e){this.schedulePopupSessionId_$.set(e)}handleCloseSchedulePopup(){this.schedulePopupSessionId_$.set(null)}handleCoordinatorIndicatorClick(e){this.coordinatorPopupSessionId_$.set(e)}handleCloseCoordinatorPopup(){this.coordinatorPopupSessionId_$.set(null)}handleCtxToggleArchive(){return P(this,null,function*(){let e=this.ctxMenuSession_$();if(e){this.handleCloseCtxMenu();try{yield this.ocSession_DS.setSessionArchived({sessionId:e.sessionId,isArchived:!e.isArchived})}catch{}}})}loadSessionsForCurrentFilters(){return P(this,null,function*(){let e=this.selectedInstanceId_$();if(e&&(yield this.ocSession_DS.loadGatewaySessions({instanceId:e}),!this.ocSession_DS.activeSessionId_$())){let i=this.filteredSessions_$();if(i.length){let t=this.peiContext_DS.activeCcapId_$(),r=t?["/oc-session",t,i[0].sessionId]:["/oc-session",i[0].sessionId];this.router.navigate(r)}}})}static \u0275fac=function(i){return new(i||n)};static \u0275cmp=A({type:n,selectors:[["app-ccap-oc-dashboard"]],hostAttrs:[1,"flex","flex-col","flex-1","min-h-0","overflow-hidden"],outputs:{sessionSelected:"sessionSelected"},decls:14,vars:9,consts:[[1,"shrink-0","px-2","py-1.5","border-b","border-neonDefault"],[1,"flex","items-center","gap-1","mb-1"],[1,"text-xs","font-semibold","text-neutral-300","flex-1"],["title","New OC Session",1,"px-1.5","py-0.5","text-xs","border","border-neonDefault","text-neutral-300","hover:bg-neutral-700","rounded","transition-colors","disabled:opacity-30",3,"click","disabled"],[1,"text-[10px]","text-neutral-500","py-0.5","animate-pulse"],[1,"flex-1","flex","items-center","justify-center"],[1,"fixed","inset-0","z-50","flex","items-center","justify-center","bg-black/60","p-4"],[3,"closed","sessionId","isOpen"],[1,"w-full","px-1.5","py-1","text-xs","bg-neutral-800","border","border-neutral-700","text-neutral-200","rounded","focus:outline-none","focus:border-ccapAccent",3,"value"],[1,"text-[10px]","text-neutral-500","py-0.5"],[1,"w-full","px-1.5","py-1","text-xs","bg-neutral-800","border","border-neutral-700","text-neutral-200","rounded","focus:outline-none","focus:border-ccapAccent",3,"change","value"],[3,"value"],[1,"shrink-0","px-2","py-1.5","border-b","border-neutral-800","flex","flex-col","gap-1"],["type","text","placeholder","Search sessions\u2026",1,"w-full","px-2","py-1","text-xs","bg-neutral-800","border","border-neutral-700","text-neutral-200","rounded","placeholder-neutral-500","focus:outline-none","focus:border-ccapAccent",3,"input","value"],[1,"flex","items-center","gap-1"],[1,"flex-1","px-1.5","py-0.5","text-xs","bg-neutral-800","border","border-neutral-700","text-neutral-300","rounded","focus:outline-none",3,"change","value"],["value",""],["value","waiting-input"],["value","running"],["value","connecting"],["value","disconnected"],["value","errored"],["value","completed"],["value","terminated"],["title","Show archived",1,"px-1.5","py-0.5","text-xs","border","rounded","transition-colors","shrink-0",3,"click"],[1,"shrink-0","px-2","py-1.5"],[1,"flex-1","overflow-y-auto"],[1,"flex","items-center","justify-center","py-8","text-xs","text-neutral-500"],[1,"flex","flex-col","items-center","justify-center","py-8","gap-2"],["kind","oc",3,"rows","activeId","showWorkspacePath","showPromptCount","hideSearch"],["routerLink","/settings/openclaw",1,"block","text-[10px]","bg-amber-500/10","border","border-amber-500/20","rounded","p-3","space-y-1.5","hover:bg-amber-500/15","hover:border-amber-500/30","transition-colors","cursor-pointer","no-underline"],["sourceLabelOverride","Gateway session lista",1,"block",3,"error"],[1,"text-amber-400","font-medium"],[1,"text-neutral-400","leading-relaxed"],[1,"text-neutral-500"],[1,"text-emerald-400","font-medium"],[1,"text-xs","text-neutral-500"],[1,"px-2","py-1","text-xs","border","border-neonDefault","text-neutral-300","hover:bg-neutral-700","rounded","transition-colors",3,"click"],["kind","oc",3,"selected","contextMenu","scheduleIndicatorClicked","coordinatorIndicatorClicked","rows","activeId","showWorkspacePath","showPromptCount","hideSearch"],[1,"fixed","inset-0","z-50","flex","items-center","justify-center","bg-black/60","p-4",3,"click"],[1,"bg-neutral-900","border","border-neutral-700","rounded-lg","shadow-2xl","w-full","max-w-md","p-4",3,"click"],[1,"text-sm","font-semibold","text-neutral-200","mb-1"],[1,"text-[10px]","text-neutral-500","mb-3"],[1,"space-y-2"],[1,"text-[10px]","text-neutral-500","block","mb-0.5"],["type","text","placeholder","/path/to/workspace",1,"w-full","px-2","py-1.5","text-xs","bg-neutral-800","border","border-neutral-700","text-neutral-200","rounded","focus:outline-none","focus:border-ccapAccent",3,"input","value"],["type","text","placeholder","Optional label",1,"w-full","px-2","py-1.5","text-xs","bg-neutral-800","border","border-neutral-700","text-neutral-200","rounded","focus:outline-none","focus:border-ccapAccent",3,"input","value"],["type","text","placeholder","default",1,"w-full","px-2","py-1.5","text-xs","bg-neutral-800","border","border-neutral-700","text-neutral-200","rounded","focus:outline-none","focus:border-ccapAccent",3,"input","value"],[1,"flex","gap-2","mt-4","justify-end"],[1,"px-3","py-1.5","text-xs","border","border-neutral-700","text-neutral-400","hover:bg-neutral-800","rounded","transition-colors",3,"click"],[1,"px-3","py-1.5","text-xs","bg-ccapAccent","text-black","font-medium","rounded","hover:bg-ccapAccent/80","transition-colors","disabled:opacity-50",3,"click","disabled"],[1,"text-neutral-300"],[1,"fixed","inset-0","z-40",3,"click"],[1,"fixed","z-50","min-w-[140px]","bg-neutral-900","border","border-neutral-700","rounded-lg","shadow-xl","py-1","text-xs"],[1,"w-full","text-left","px-3","py-1.5","text-neutral-300","hover:bg-neutral-800","transition-colors",3,"click","disabled"],[1,"w-full","text-left","px-3","py-1.5","text-neutral-300","hover:bg-neutral-800","transition-colors",3,"click"]],template:function(i,t){if(i&1&&(s(0,"div",0)(1,"div",1)(2,"span",2),l(3,"OC Sessions"),o(),s(4,"button",3),x("click",function(){return t.handleOpenCreateDialog()}),l(5," + New "),o()(),h(6,bt,2,1)(7,wt,2,0,"div",4),o(),h(8,Ot,27,6)(9,kt,3,0,"div",5)(10,At,23,6,"div",6),s(11,"app-sch-schedule-popup",7),x("closed",function(){return t.handleCloseSchedulePopup()}),o(),s(12,"app-crd-info-popup",7),x("closed",function(){return t.handleCloseCoordinatorPopup()}),o(),h(13,Rt,8,7)),i&2){let r;c(4),f("disabled",!t.selectedInstanceId_$()),c(2),u(t.registryLoaded_$()?6:7),c(2),u(t.selectedInstanceId_$()?8:t.registryLoaded_$()&&t.ocRegistry_$().length?9:-1),c(2),u(t.isCreateDialogOpen_$()?10:-1),c(),f("sessionId",t.schedulePopupSessionId_$())("isOpen",t.schedulePopupSessionId_$()!==null),c(),f("sessionId",t.coordinatorPopupSessionId_$())("isOpen",t.coordinatorPopupSessionId_$()!==null),c(),u((r=t.ctxMenuSession_$())?13:-1,r)}},dependencies:[Ae,Me,ke,K,ee,te,Ue],encapsulation:2})}return n})();var q=(()=>{class n{transform(e){switch(e){case"running":return"bg-yellow-500";case"waiting-input":return"bg-green-500";case"connecting":return"bg-yellow-500";case"creating":return"bg-yellow-400";case"completed":return"bg-blue-500";case"errored":return"bg-red-500";case"terminated":return"bg-red-700";case"disconnected":return"bg-amber-700";default:return"bg-neutral-600"}}static \u0275fac=function(i){return new(i||n)};static \u0275pipe=F({name:"ocSessionStatusColor",type:n,pure:!0})}return n})();function Ut(n,a){n&1&&I(0,"div",5)}function Nt(n,a){if(n&1){let e=y();s(0,"button",13),x("click",function(){_(e);let t=d();return p(t.detailUi_DS.handleToggleMetadata())}),l(1," Info "),o()}if(n&2){let e=d();M(e.detailUi_DS.isMetadataPanelOpen_$()?"border-neonCyan/50 text-neonCyan bg-neonCyan/10":"border-neutral-700 text-neutral-500 hover:text-neutral-300 hover:border-neutral-600")}}function zt(n,a){n&1&&I(0,"span",17)}function qt(n,a){if(n&1&&(I(0,"span",16),D(1,"ocSessionStatusColor"),h(2,zt,1,0,"span",17)),n&2){d(2);let e=L(1);f("ngClass",E(1,3,e.detail.session.status))("title",e.detail.session.status),c(2),u(e.detail.runtime.isLive?2:-1)}}function Bt(n,a){n&1&&(s(0,"span",15),l(1,"Loading\u2026"),o())}function Ht(n,a){if(n&1&&(s(0,"span",14),l(1),o(),h(2,qt,3,5)(3,Bt,2,0,"span",15)),n&2){d();let e=L(1);f("title",e.title),c(),$(" ",e.title," "),c(),u(e.detail?2:-1),c(),u(e.isLoading&&!e.detail?3:-1)}}function jt(n,a){if(n&1){let e=y();I(0,"div",19),s(1,"button",20),x("click",function(){_(e);let t=d(2);return p(t.detailUi_DS.handleStopExecution())}),l(2),o()}if(n&2){let e=d(2);c(),f("disabled",e.detailUi_DS.isStopping_$()),c(),$(" ",e.detailUi_DS.isStopping_$()?"Stopping\u2026":"Stop"," ")}}function Qt(n,a){if(n&1){let e=y();s(0,"button",18),x("click",function(){_(e);let t=d();return p(t.detailUi_DS.handleToggleTimeline())}),l(1," Timeline "),o(),h(2,jt,3,2)}if(n&2){let e=d(),i=L(1);M(e.detailUi_DS.isTimelinePanelOpen_$()?"border-neonCyan/50 text-neonCyan bg-neonCyan/10":"border-neutral-700 text-neutral-500 hover:text-neutral-300 hover:border-neutral-600"),c(2),u(!(i.detail==null||i.detail.runtime==null)&&i.detail.runtime.isLive?2:-1)}}var ot=(()=>{class n{ocSession_DS=v(k);detailUi_DS=v(z);ocTopBarContext_$=T(()=>{let e=this.ocSession_DS.activeSessionId_$();if(!e)return null;let i=this.ocSession_DS.selectedSessionLoading_$(),t=this.ocSession_DS.selectedSession_$(),C=this.ocSession_DS.sessions_$().find(St=>St.sessionId===e),g=t?.session.sessionId===e;return{title:(g?t.session.label||t.session.sessionId:null)??(C?C.label||C.sessionId:e),detail:g?t:null,isLoading:i,showActions:g&&!i}});sidebarWidth_$=m(320);isSidebarOpen_$=m(!0);isResizing_$=m(!1);ngOnInit(){let e=S.loadPanelWidth("sidebar",320);this.sidebarWidth_$.set(Math.max(200,Math.min(600,e))),this.isSidebarOpen_$.set(S.loadPanelOpen("sidebar",!0))}handleSidebarResizeStart(e){let i=e.clientX,t=this.sidebarWidth_$();this.isResizing_$.set(!0),B.attachUntilPointerUp({startEvent:e,onMove:r=>{let C=r.clientX-i,g=Math.max(200,Math.min(600,t+C));this.sidebarWidth_$.set(g)},onEnd:()=>{this.isResizing_$.set(!1),S.savePanelWidth("sidebar",this.sidebarWidth_$())}})}handleToggleSidebar(){this.isSidebarOpen_$.update(e=>!e),S.savePanelOpen("sidebar",this.isSidebarOpen_$())}handleSessionSelectedFromDashboard(){window.innerWidth<640&&this.isSidebarOpen_$.set(!1)}static \u0275fac=function(i){return new(i||n)};static \u0275cmp=A({type:n,selectors:[["app-ccap-oc-shell"]],hostAttrs:[1,"flex","min-h-0","w-full","flex-1","flex-col","overflow-hidden"],decls:19,vars:14,consts:[[1,"flex","min-h-0","w-full","flex-1","flex-col","overflow-hidden"],["sSessionToolbarLeft","",1,"flex","items-center","gap-1","min-w-0"],["type","button",1,"px-2","py-1","text-xs","border","border-neonDefault","text-neutral-300","hover:bg-neutral-700","rounded","transition-colors","flex","items-center","gap-1","shrink-0",3,"click"],["viewBox","0 0 24 24","fill","none","stroke","currentColor","stroke-width","2","stroke-linecap","round","stroke-linejoin","round",1,"w-3","h-3","shrink-0","transition-transform","duration-150"],["points","6 9 12 15 18 9"],[1,"w-px","h-4","bg-neutral-700","shrink-0","self-center","mx-0.5"],["type","button",1,"px-2","py-1","text-xs","border","rounded","transition-colors","shrink-0",3,"class"],["sSessionToolbarCenter","",1,"flex","items-center","justify-center","gap-2","min-w-0","max-w-[min(100vw-12rem,42rem)]"],["sSessionToolbarRight","",1,"flex","items-center","gap-1","min-w-0","flex-wrap","justify-end"],[3,"sidebarResizeStart","isSidebarOpen","sidebarWidthPx","isResizing"],["sSessionShellSidebar","",1,"flex","flex-col","overflow-hidden","h-full"],[3,"sessionSelected"],["sSessionShellMain","",1,"flex","min-h-0","flex-1","flex-col","overflow-hidden","[&>router-outlet]:contents"],["type","button",1,"px-2","py-1","text-xs","border","rounded","transition-colors","shrink-0",3,"click"],[1,"text-sm","font-semibold","text-neutral-200","truncate","text-center","min-w-0","max-w-[min(240px,35vw)]",3,"title"],[1,"text-[10px]","text-neutral-500","shrink-0"],[1,"w-2","h-2","rounded-full","shrink-0",3,"ngClass","title"],["title","Live",1,"w-2","h-2","rounded-full","bg-green-500","animate-pulse","shrink-0"],["type","button",1,"px-2","py-1","text-xs","border","rounded","transition-colors",3,"click"],[1,"hidden","sm:block","w-px","h-4","bg-neutral-700","shrink-0","self-center"],["type","button",1,"px-2","py-1","text-xs","border","border-neonRed/50","text-red-300","hover:bg-red-950/40","rounded","transition-colors","shrink-0","disabled:opacity-40",3,"click","disabled"]],template:function(i,t){if(i&1){let r=y();s(0,"div",0),j(1),s(2,"app-s-session-shell-toolbar")(3,"div",1)(4,"button",2),x("click",function(){return _(r),p(t.handleToggleSidebar())}),Se(),s(5,"svg",3),I(6,"polyline",4),o(),l(7," OC Sessions "),o(),h(8,Ut,1,0,"div",5)(9,Nt,2,2,"button",6),o(),he(),s(10,"div",7),h(11,Ht,4,4),o(),s(12,"div",8),h(13,Qt,3,3),o()(),s(14,"app-s-resizable-session-shell-layout",9),x("sidebarResizeStart",function(g){return _(r),p(t.handleSidebarResizeStart(g))}),s(15,"div",10)(16,"app-ccap-oc-dashboard",11),x("sessionSelected",function(){return _(r),p(t.handleSessionSelectedFromDashboard())}),o()(),s(17,"div",12),I(18,"router-outlet"),o()()()}if(i&2){oe("select-none",t.isResizing_$()),c();let r=Q(t.ocTopBarContext_$());c(4),oe("rotate-90",t.isSidebarOpen_$())("-rotate-90",!t.isSidebarOpen_$()),c(3),u(r?8:-1),c(),u(r&&r.showActions?9:-1),c(2),u(r?11:-1),c(2),u(r&&r.showActions?13:-1),c(),f("isSidebarOpen",t.isSidebarOpen_$())("sidebarWidthPx",t.sidebarWidth_$())("isResizing",t.isResizing_$())}},dependencies:[N,Te,Ne,ze,Ze,q],encapsulation:2})}return n})();var ne=class n{static fromConsoleMessage(a){let e=n.mapTypeToKind(a.type),i=a.type==="prompt";return{listKey:a.listKey,kind:e,bodyText:a.text,timestampIso:a.timestamp,expandableContent:a.expandableContent,rawData:a.rawData,isUserAligned:i,flags:{showCopy:!0,showRawInfo:!0,useEditDiffForExpandable:!1}}}static mapTypeToKind(a){switch(a){case"prompt":return V.userPrompt;case"assistant":return V.assistant;case"tool":return V.tool;case"tool-result":return V.toolResult;case"error":return V.error;case"info":return V.info;case"status":return V.status;default:return V.info}}};var Xt=["messagesEnd"],Kt=["topSentinel"],Gt=(n,a)=>a.listKey,Jt=()=>({"w-[90%]":!0,"ml-4":!0}),Yt=()=>({"w-[85%]":!0});function Zt(n,a){if(n&1&&(s(0,"span",15),D(1,"ocSessionStatusColor"),l(2),o()),n&2){let e=a;M(E(1,3,e.session.status)),c(2),$(" ",e.session.status," ")}}function en(n,a){if(n&1&&(s(0,"span",16),l(1),o()),n&2){let e=d(2);c(),$(" Cost: $",e.ocSession_DS.sessionUsage_$().costUsd.toFixed(4)," ")}}function tn(n,a){if(n&1&&(s(0,"div",6)(1,"span",16),l(2),o(),h(3,en,2,1,"span",16),o()),n&2){let e=d();c(2),ye(" Tokens: ",e.ocSession_DS.sessionUsage_$().inputTokens.toLocaleString()," in / ",e.ocSession_DS.sessionUsage_$().outputTokens.toLocaleString()," out "),c(),u(e.ocSession_DS.sessionUsage_$().costUsd>0?3:-1)}}function nn(n,a){n&1&&(s(0,"div",8),l(1," R\xE9gebbi \xFCzenetek bet\xF6lt\xE9se\u2026 "),o())}function on(n,a){n&1&&(s(0,"div",9),l(1," \u2014 A besz\xE9lget\xE9s eleje \u2014 "),o())}function sn(n,a){n&1&&(s(0,"div",10),l(1," Loading session history\u2026 "),o())}function an(n,a){n&1&&(s(0,"div",10),l(1," No messages yet \u2014 send a prompt to start "),o())}function rn(n,a){if(n&1){let e=y();s(0,"div")(1,"div",17)(2,"app-s-agent-console-message-bubble",18),x("ttsCached",function(t){_(e);let r=d();return p(r.handleTtsCached(t))}),o()()()}if(n&2){let e=a.$implicit,i=d();M(e.isUserAligned?"flex justify-end":"flex justify-start"),c(),f("ngClass",e.kind===i.bubbleKind.tool||e.kind===i.bubbleKind.toolResult?le(4,Jt):le(5,Yt)),c(),f("view",e)}}var st=(()=>{class n{messagesEndRef;topSentinelRef;topSentinelObserver=null;ocSession_DS=v(k);detailUi_DS=v(z);route=v(X);voiceInputUi_DS=v(We);sessionQueue_DS=v(Je);promptInput_$=m("");isSending_$=m(!1);isExecuting_$=T(()=>this.ocSession_DS.selectedSession_$()?.runtime?.isLive===!0);messages_$=T(()=>this.ocSession_DS.consoleMessages_$());ttsCachedKeys_$=m(new Set);handleTtsCached(e){this.ttsCachedKeys_$.update(i=>new Set([...i,e]))}bubbleViews_$=T(()=>{let e=this.ocSession_DS.assembledMessages_$();if(e.length>0){let i=this.sessionId,t=this.ttsCachedKeys_$(),r=e.map(C=>Ye.fromAssembledMessage(C,{sessionId:i,cachedKeys:t}));return r=_e.groupSubAgentItems(r),r=_e.groupConsecutiveToolItems(r),r}return this.messages_$().map(i=>ne.fromConsoleMessage(i))});bubbleKind=V;isComposerSendDisabled_$=T(()=>!this.promptInput_$().trim().length);get sessionId(){return this.ocSession_DS.activeSessionId_$()}previousConsoleMessageCount=0;ngAfterViewInit(){this.scheduleScrollToBottom(),this.setupTopSentinelObserver()}ngAfterViewChecked(){let e=this.ocSession_DS.consoleMessages_$().length;e>this.previousConsoleMessageCount&&this.scheduleScrollToBottom(),this.previousConsoleMessageCount=e}ngOnInit(){let e=this.route.snapshot.paramMap.get("sessionId")??"";if(e){let i=S.loadPromptDraft(e);this.promptInput_$.set(i),this.sessionQueue_DS.subscribeToSession({sessionId:e,baseRoute:"oc-session"})}}handleSendPrompt(){return P(this,null,function*(){let e=this.promptInput_$().trim();if(!(!e||!this.sessionId||this.isSending_$())){S.clearPromptDraft(this.sessionId),this.promptInput_$.set(""),this.isSending_$.set(!0);try{yield this.ocSession_DS.sendPrompt({sessionId:this.sessionId,content:e})}catch{}finally{this.isSending_$.set(!1)}}})}handleComposerDraftChange(e){this.promptInput_$.set(e);let i=this.sessionId;i&&S.savePromptDraft(i,e)}handleVoiceSegment(e){let i=e.text.trim();if(!i.length)return;let t=this.promptInput_$().trim(),r=t.length>0?`${t} ${i}`:i;this.handleComposerDraftChange(r),this.voiceInputUi_DS.autoSendAfterVoice_$()&&e.isFinal&&this.handleSendPrompt()}scheduleScrollToBottom(){setTimeout(()=>{this.scrollToBottom()},0)}scrollToBottom(){let e=this.messagesEndRef?.nativeElement;e&&e.scrollIntoView({block:"end",inline:"nearest"})}ngOnDestroy(){this.topSentinelObserver&&(this.topSentinelObserver.disconnect(),this.topSentinelObserver=null)}setupTopSentinelObserver(){let e=this.topSentinelRef?.nativeElement;!e||typeof IntersectionObserver>"u"||this.topSentinelObserver||(this.topSentinelObserver=new IntersectionObserver(i=>{for(let t of i)t.isIntersecting&&this.loadOlderAssembledIfNeeded()},{rootMargin:"100px 0px 0px 0px",threshold:0}),this.topSentinelObserver.observe(e))}loadOlderAssembledIfNeeded(){this.sessionId&&this.ocSession_DS.loadOlderAssembledMessages({sessionId:this.sessionId})}static \u0275fac=function(i){return new(i||n)};static \u0275cmp=A({type:n,selectors:[["app-ccap-oc-console"]],viewQuery:function(i,t){if(i&1&&(se(Xt,5),se(Kt,5)),i&2){let r;ae(r=re())&&(t.messagesEndRef=r.first),ae(r=re())&&(t.topSentinelRef=r.first)}},hostAttrs:[1,"flex","flex-col","flex-1","min-h-0","overflow-hidden","w-full","min-w-0"],decls:21,vars:16,consts:[["topSentinel",""],["messagesEnd",""],["sChatColumnHeader","",1,"flex","shrink-0","flex-col"],[1,"flex","shrink-0","items-center","gap-2","border-b","border-neonDefault","bg-ccapSurface","px-3","py-1.5"],[1,"flex-1","truncate","font-mono","text-xs","text-neutral-400"],[1,"rounded","px-1.5","py-0.5","text-[10px]","font-medium","text-black",3,"class"],[1,"flex","shrink-0","items-center","gap-3","border-b","border-neutral-800","bg-neutral-900/50","px-3","py-1"],["sChatColumnScroll","",1,"space-y-3","px-3","py-3","text-xs"],[1,"text-center","text-neutral-500","py-2","text-xs","italic"],[1,"text-center","text-neutral-600","py-1","text-xs"],[1,"flex","h-full","items-center","justify-center","text-xs","text-neutral-600"],[3,"class"],["sChatColumnComposer",""],["placeholder","Send a prompt\u2026 (Enter to send, Shift+Enter for newline)",3,"draftTextChange","sendRequested","queueRequested","stopRequested","queueEditStart","queueEditTextChange","queueEditSave","queueEditCancel","queueRemoveItem","queueSendNow","queueMoveUp","queueMoveDown","draftText","isExecuting","isSending","isStopping","enableAttachments","textareaRows","queueItems","isQueueLocked","editingQueueItemId","editingQueueText"],["sInputTextareaAccessory","",3,"transcriptSegmentReady","compactLayout"],[1,"rounded","px-1.5","py-0.5","text-[10px]","font-medium","text-black"],[1,"text-[10px]","text-neutral-500"],[1,"max-w-full",3,"ngClass"],[3,"ttsCached","view"]],template:function(i,t){if(i&1){let r=y();s(0,"app-s-session-chat-column-layout")(1,"div",2)(2,"div",3)(3,"span",4),l(4),o(),h(5,Zt,3,5,"span",5),o(),h(6,tn,4,3,"div",6),o(),s(7,"div",7),I(8,"div",null,0),h(10,nn,2,0,"div",8)(11,on,2,0,"div",9)(12,sn,2,0,"div",10)(13,an,2,0,"div",10),W(14,rn,3,6,"div",11,Gt),I(16,"div",null,1),o(),s(18,"div",12)(19,"app-s-session-input",13),x("draftTextChange",function(g){return _(r),p(t.handleComposerDraftChange(g))})("sendRequested",function(){return _(r),p(t.handleSendPrompt())})("queueRequested",function(){return _(r),p(t.handleSendPrompt())})("stopRequested",function(){return _(r),p(t.detailUi_DS.handleStopExecution())})("queueEditStart",function(g){return _(r),p(t.sessionQueue_DS.startEditing(g))})("queueEditTextChange",function(g){return _(r),p(t.sessionQueue_DS.editingText_$.set(g))})("queueEditSave",function(){return _(r),p(t.sessionQueue_DS.saveEdit())})("queueEditCancel",function(){return _(r),p(t.sessionQueue_DS.cancelEdit())})("queueRemoveItem",function(g){return _(r),p(t.sessionQueue_DS.removeItem(g))})("queueSendNow",function(g){return _(r),p(t.sessionQueue_DS.sendNow(g))})("queueMoveUp",function(g){return _(r),p(t.sessionQueue_DS.reorderItem({queueItemId:g,direction:"up"}))})("queueMoveDown",function(g){return _(r),p(t.sessionQueue_DS.reorderItem({queueItemId:g,direction:"down"}))}),s(20,"app-ccap-voice-record-button",14),x("transcriptSegmentReady",function(g){return _(r),p(t.handleVoiceSegment(g))}),o()()()()}if(i&2){let r;c(4),$(" ",t.ocSession_DS.activeSessionId_$()||"No session"," "),c(),u((r=t.ocSession_DS.selectedSession_$())?5:-1,r),c(),u(t.ocSession_DS.sessionUsage_$().inputTokens>0||t.ocSession_DS.sessionUsage_$().outputTokens>0?6:-1),c(4),u(t.ocSession_DS.isLoadingOlderMessages_$()?10:t.bubbleViews_$().length>0&&!t.ocSession_DS.assembledMessagesHasMore_$()?11:-1),c(2),u(t.ocSession_DS.selectedSessionLoading_$()?12:t.bubbleViews_$().length?-1:13),c(2),U(t.bubbleViews_$()),c(5),f("draftText",t.promptInput_$())("isExecuting",t.isExecuting_$())("isSending",t.isSending_$())("isStopping",t.detailUi_DS.isStopping_$())("enableAttachments",!0)("textareaRows",3)("queueItems",t.sessionQueue_DS.items_$())("isQueueLocked",t.sessionQueue_DS.isLocked_$())("editingQueueItemId",t.sessionQueue_DS.editingItemId_$())("editingQueueText",t.sessionQueue_DS.editingText_$()),c(),f("compactLayout",!0)}},dependencies:[N,J,Be,He,je,q],encapsulation:2})}return n})();var at=(()=>{class n{transform(e){switch(e){case"status-change":return"bg-purple-600";case"config-change":return"bg-purple-500";case"prompt-sent":return"bg-blue-600";case"response-chunk":return"bg-green-600";case"response-complete":return"bg-green-500";case"tool-call-start":return"bg-orange-500";case"tool-call-end":return"bg-orange-400";case"error":return"bg-red-600";case"session-attached":return"bg-cyan-600";case"session-detached":return"bg-cyan-700";case"usage-update":return"bg-neutral-500";case"connection-change":return"bg-blue-700";case"gateway-message":return"bg-neutral-600";default:return"bg-neutral-600"}}static \u0275fac=function(i){return new(i||n)};static \u0275pipe=F({name:"ocSessionEventTypeColor",type:n,pure:!0})}return n})();var rt=(()=>{class n{sanitizer;constructor(e){this.sanitizer=e}transform(e){if(!e)return this.sanitizer.bypassSecurityTrustHtml('<span class="text-neutral-500">{}</span>');try{let i=JSON.stringify(e,null,2),t=this.highlightJson(i);return this.sanitizer.bypassSecurityTrustHtml(t)}catch{return this.sanitizer.bypassSecurityTrustHtml('<span class="text-neutral-500">{}</span>')}}MULTILINE_THRESHOLD=150;highlightJson(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/("(\\u[\da-fA-F]{4}|\\[^u]|[^\\"])*"(\s*:)?|\b(true|false|null)\b|-?\d+(?:\.\d*)?(?:[eE][+-]?\d+)?)/g,t=>/^"/.test(t)?/:$/.test(t)?`<span style="color:#7dd3fc">${t}</span>`:t.length>this.MULTILINE_THRESHOLD&&t.includes("\\n")?this.formatMultilineString(t):`<span style="color:#86efac">${t}</span>`:/true|false/.test(t)?`<span style="color:#fbbf24">${t}</span>`:/null/.test(t)?`<span style="color:#a78bfa">${t}</span>`:`<span style="color:#fb923c">${t}</span>`)}formatMultilineString(e){return'<span style="color:#86efac">"</span><span style="display:block;margin:2px 0;padding:4px 8px;border-left:2px solid rgba(134,239,172,0.25);background:rgba(134,239,172,0.04);border-radius:0 4px 4px 0;color:#86efac;opacity:0.85;white-space:pre-wrap;word-break:break-word;font-size:0.9em;line-height:1.5">'+e.slice(1,-1).replace(/\\n/g,`
|
|
2
|
-
`).replace(/\\t/g," ").replace(/\\r/g,"").replace(/\\"/g,'"').replace(/\\\\/g,"\\")+'</span><span style="color:#86efac">"</span>'}static \u0275fac=function(i){return new(i||n)(ve(Ee,16))};static \u0275pipe=F({name:"ocSessionJsonFormat",type:n,pure:!0})}return n})();var un=(n,a)=>a.sequence,mn=n=>({"bg-neutral-800/30":n});function xn(n,a){n&1&&(s(0,"div",0),l(1," No events yet "),o())}function Sn(n,a){if(n&1&&(s(0,"div",8)(1,"div",9),l(2,"Event data:"),o(),I(3,"div",10),D(4,"ocSessionJsonFormat"),o()),n&2){let e=d().$implicit;c(3),f("innerHTML",E(4,1,e.data),ge)}}function hn(n,a){if(n&1){let e=y();s(0,"div",2),x("click",function(){let t=_(e).$implicit,r=d(2);return p(r.handleSelectEvent(t))}),s(1,"div",3)(2,"span",4),D(3,"ocSessionEventTypeColor"),l(4),o(),s(5,"span",5),l(6),o()(),s(7,"div",6),l(8),o(),s(9,"div",7),D(10,"sAbsoluteTime"),l(11),D(12,"sTimeAgo"),o(),h(13,Sn,5,3,"div",8),o()}if(n&2){let e,i,t=a.$implicit,r=d(2);f("ngClass",Ie(15,mn,((e=r.selectedEvent_$())==null?null:e.sequence)===t.sequence)),c(2),M(E(3,9,t.eventType)),c(2),$(" ",t.eventType," "),c(2),$(" #",t.sequence," "),c(2),$(" ",r.getEventBrief(t)," "),c(),f("title",E(10,11,t.timestamp)),c(2),$(" ",E(12,13,t.timestamp)," "),c(2),u(((i=r.selectedEvent_$())==null?null:i.sequence)===t.sequence?13:-1)}}function fn(n,a){if(n&1&&W(0,hn,14,17,"div",1,un),n&2){let e=d();U(e.events_$())}}var lt=(()=>{class n{ocSession_DS=v(k);selectedEvent_$=m(null);events_$=T(()=>[...this.ocSession_DS.selectedSessionEvents_$()].reverse());handleSelectEvent(e){this.selectedEvent_$()?.sequence===e.sequence?this.selectedEvent_$.set(null):this.selectedEvent_$.set(e)}getEventBrief(e){let i=e.data;switch(e.eventType){case"status-change":{let t=typeof i.from=="string"?i.from:"",r=typeof i.to=="string"?i.to:"";return`${t} \u2192 ${r}`}case"prompt-sent":{let t=typeof i.content=="string"?i.content:"";return t.length>60?t.substring(0,60)+"\u2026":t}case"response-complete":{let t=typeof i.content=="string"?i.content:"";return t.length>60?t.substring(0,60)+"\u2026":t}case"tool-call-start":return typeof i.name=="string"?i.name:"";case"error":{let t=typeof i.message=="string"?i.message:"";return t.length>60?t.substring(0,60)+"\u2026":t}default:{let t=JSON.stringify(i);return t.length>60?t.substring(0,60)+"\u2026":t}}}static \u0275fac=function(i){return new(i||n)};static \u0275cmp=A({type:n,selectors:[["app-ccap-oc-timeline"]],hostAttrs:[1,"flex","flex-col","h-full"],decls:2,vars:1,consts:[[1,"flex","items-center","justify-center","py-6","text-[10px]","text-neutral-600"],[1,"border-b","border-neutral-800/60","cursor-pointer","hover:bg-neutral-800/40","transition-colors",3,"ngClass"],[1,"border-b","border-neutral-800/60","cursor-pointer","hover:bg-neutral-800/40","transition-colors",3,"click","ngClass"],[1,"flex","items-center","gap-1","px-2","py-1"],[1,"text-[9px]","px-1","py-0.5","rounded","font-medium","text-black","shrink-0"],[1,"text-[9px]","text-neutral-600","shrink-0","ml-auto"],[1,"px-2","pb-1","text-[10px]","text-neutral-400","truncate","font-mono"],[1,"px-2","pb-1","text-[10px]","text-neutral-400",3,"title"],[1,"px-2","py-2","border-t","border-neutral-800/80","bg-neutral-900/40"],[1,"text-[10px]","text-neutral-500","mb-1"],[1,"text-[10px]","font-mono","overflow-x-auto",3,"innerHTML"]],template:function(i,t){i&1&&h(0,xn,2,0,"div",0)(1,fn,2,0),i&2&&u(t.events_$().length?1:0)},dependencies:[N,Y,Z,at,rt],encapsulation:2})}return n})();function gn(n,a){n&1&&(s(0,"div",0),l(1," Loading\u2026 "),o())}function vn(n,a){n&1&&(s(0,"div",0),l(1," No session selected "),o())}function bn(n,a){n&1&&(s(0,"span",4),l(1,"\u25CF Live"),o())}function wn(n,a){if(n&1&&(s(0,"div",7)(1,"span",8),l(2,"Label"),o(),s(3,"span",10),l(4),o()()),n&2){d();let e=L(0);c(4),O(e.label)}}function yn(n,a){if(n&1&&(s(0,"div",7)(1,"span",8),l(2,"OC Session ID"),o(),s(3,"span",17),l(4),o()()),n&2){d();let e=L(0);c(4),O(e.openclawSessionId)}}function $n(n,a){if(n&1&&(s(0,"div",12)(1,"span",8),l(2,"Cost"),o(),s(3,"span",10),l(4),o()()),n&2){d();let e=L(0);c(4),$("$",e.costUsdTotal.toFixed(4),"")}}function In(n,a){if(n&1&&(s(0,"div",12)(1,"span",8),l(2,"Tokens in"),o(),s(3,"span",10),l(4),o()()),n&2){d();let e=L(0);c(4),O(e.inputTokensTotal.toLocaleString())}}function Dn(n,a){if(n&1&&(s(0,"div",18)(1,"span",8),l(2,"Started"),o(),s(3,"span",19),D(4,"sAbsoluteTime"),l(5),D(6,"sTimeAgo"),o()()),n&2){d(2);let e=L(0);c(3),f("title",E(4,2,e.startedAt)),c(2),O(E(6,4,e.startedAt))}}function En(n,a){if(n&1&&(s(0,"div",18)(1,"span",8),l(2,"Last activity"),o(),s(3,"span",19),D(4,"sAbsoluteTime"),l(5),D(6,"sTimeAgo"),o()()),n&2){d(2);let e=L(0);c(3),f("title",E(4,2,e.lastActivityAt)),c(2),O(E(6,4,e.lastActivityAt))}}function Tn(n,a){if(n&1&&(s(0,"div",13)(1,"div",6),l(2,"Activity"),o(),h(3,Dn,7,6,"div",18)(4,En,7,6,"div",18),o()),n&2){d();let e=L(0);c(3),u(e.startedAt?3:-1),c(),u(e.lastActivityAt?4:-1)}}function On(n,a){if(n&1){let e=y();s(0,"button",20),x("click",function(){_(e);let t=d(2);return p(t.handleReconnect())}),l(1),o()}if(n&2){let e=d(2);f("disabled",e.isReconnecting_$()),c(),$(" ",e.isReconnecting_$()?"Reconnecting\u2026":"Reconnect"," ")}}function kn(n,a){if(n&1){let e=y();s(0,"button",21),x("click",function(){_(e);let t=d(2);return p(t.handleTerminate())}),l(1),o()}if(n&2){let e=d(2);f("disabled",e.isTerminating_$()),c(),$(" ",e.isTerminating_$()?"Terminating\u2026":"Terminate"," ")}}function Pn(n,a){if(n&1&&(j(0)(1),s(2,"div",1)(3,"div",2)(4,"span",3),D(5,"ocSessionStatusColor"),l(6),o(),h(7,bn,2,0,"span",4),o(),s(8,"div",5)(9,"div",6),l(10,"Session"),o(),s(11,"div",7)(12,"span",8),l(13,"ID"),o(),s(14,"span",9),l(15),o()(),h(16,wn,5,1,"div",7),s(17,"div",7)(18,"span",8),l(19,"Workspace"),o(),s(20,"span",9),l(21),o()()(),s(22,"div",5)(23,"div",6),l(24,"Gateway"),o(),s(25,"div",7)(26,"span",8),l(27,"URL"),o(),s(28,"span",9),l(29),o()(),s(30,"div",7)(31,"span",8),l(32,"Agent"),o(),s(33,"span",10),l(34),o()(),h(35,yn,5,1,"div",7),o(),s(36,"div",5)(37,"div",6),l(38,"Stats"),o(),s(39,"div",11)(40,"div",12)(41,"span",8),l(42,"Prompts"),o(),s(43,"span",10),l(44),o()(),s(45,"div",12)(46,"span",8),l(47,"Tool calls"),o(),s(48,"span",10),l(49),o()(),h(50,$n,5,1,"div",12)(51,In,5,1,"div",12),o()(),h(52,Tn,5,2,"div",13),s(53,"div",14),h(54,On,2,2,"button",15)(55,kn,2,2,"button",16),o()()),n&2){let e=d(),i=Q(e.sessionDetail_$().session),t=e.sessionDetail_$().runtime;c(4),M(E(5,18,i.status)),c(2),$(" ",i.status," "),c(),u(t.isLive?7:-1),c(8),O(i.sessionId),c(),u(i.label?16:-1),c(5),O(i.workspacePath),c(8),O(i.gatewayUrl||"ws://127.0.0.1:18789"),c(5),O(i.openclawAgentName||"default"),c(),u(i.openclawSessionId?35:-1),c(9),O(i.promptCount),c(5),O(i.toolCallCount),c(),u(i.costUsdTotal?50:-1),c(),u(i.inputTokensTotal?51:-1),c(),u(i.startedAt||i.lastActivityAt?52:-1),c(2),u(i.status==="disconnected"||i.status==="errored"?54:-1),c(),u(i.status==="running"||i.status==="waiting-input"?55:-1)}}var ct=(()=>{class n{ocSession_DS=v(k);sessionDetail_$=T(()=>this.ocSession_DS.selectedSession_$());isLoading_$=T(()=>this.ocSession_DS.selectedSessionLoading_$());isReconnecting_$=m(!1);isTerminating_$=m(!1);handleReconnect(){return P(this,null,function*(){let e=this.sessionDetail_$();if(e){this.isReconnecting_$.set(!0);try{yield this.ocSession_DS.reconnectSession({sessionId:e.session.sessionId}),yield this.ocSession_DS.loadSessionDetail({sessionId:e.session.sessionId})}catch{}finally{this.isReconnecting_$.set(!1)}}})}handleTerminate(){return P(this,null,function*(){let e=this.sessionDetail_$();if(e){this.isTerminating_$.set(!0);try{yield this.ocSession_DS.terminateSession({sessionId:e.session.sessionId})}catch{}finally{this.isTerminating_$.set(!1)}}})}static \u0275fac=function(i){return new(i||n)};static \u0275cmp=A({type:n,selectors:[["app-ccap-oc-metadata"]],hostAttrs:[1,"flex","flex-col"],decls:3,vars:1,consts:[[1,"flex","items-center","justify-center","py-6","text-[10px]","text-neutral-600"],[1,"p-2","space-y-3","text-xs"],[1,"flex","items-center","gap-2"],[1,"px-2","py-0.5","rounded","text-[10px]","font-medium","text-black"],[1,"text-[10px]","text-green-500","animate-pulse"],[1,"space-y-1.5"],[1,"text-[10px]","font-semibold","text-neutral-500","uppercase","tracking-wide"],[1,"flex","flex-col","gap-0.5"],[1,"text-[10px]","text-neutral-600"],[1,"font-mono","text-[10px]","text-neutral-300","break-all"],[1,"text-[10px]","text-neutral-300"],[1,"grid","grid-cols-2","gap-1"],[1,"flex","flex-col"],[1,"space-y-1"],[1,"flex","flex-col","gap-1.5","pt-1","border-t","border-neutral-800"],[1,"w-full","px-2","py-1.5","text-[10px]","border","border-blue-500/50","text-blue-400","hover:bg-blue-500/10","rounded","transition-colors","disabled:opacity-50",3,"disabled"],[1,"w-full","px-2","py-1.5","text-[10px]","border","border-red-500/50","text-red-400","hover:bg-red-500/10","rounded","transition-colors","disabled:opacity-50",3,"disabled"],[1,"font-mono","text-[10px]","text-neutral-400","break-all"],[1,"flex","items-center","justify-between"],[1,"text-[10px]","text-neutral-400",3,"title"],[1,"w-full","px-2","py-1.5","text-[10px]","border","border-blue-500/50","text-blue-400","hover:bg-blue-500/10","rounded","transition-colors","disabled:opacity-50",3,"click","disabled"],[1,"w-full","px-2","py-1.5","text-[10px]","border","border-red-500/50","text-red-400","hover:bg-red-500/10","rounded","transition-colors","disabled:opacity-50",3,"click","disabled"]],template:function(i,t){i&1&&h(0,gn,2,0,"div",0)(1,vn,2,0,"div",0)(2,Pn,56,20,"div",1),i&2&&u(t.isLoading_$()?0:t.sessionDetail_$()?2:1)},dependencies:[Y,Z,q],encapsulation:2})}return n})();function Mn(n,a){n&1&&(s(0,"div",0),l(1," Select a session from the sidebar "),o())}function Ln(n,a){n&1&&(s(0,"div",0),l(1," Loading session\u2026 "),o())}function Vn(n,a){if(n&1){let e=y();s(0,"app-s-session-detail-three-column-layout",2),x("startResizeStart",function(t){_(e);let r=d();return p(r.handleMetadataResizeStart(t))})("endResizeStart",function(t){_(e);let r=d();return p(r.handleTimelineResizeStart(t))}),s(1,"div",3),I(2,"app-ccap-oc-metadata"),o(),s(3,"div",4),I(4,"app-ccap-oc-console"),o(),s(5,"div",5),I(6,"app-ccap-oc-timeline"),o()()}if(n&2){let e=d();f("isStartOpen",e.detailUi_DS.isMetadataPanelOpen_$())("isEndOpen",e.detailUi_DS.isTimelinePanelOpen_$())("startWidthPx",e.metadataWidth_$())("endWidthPx",e.timelineWidth_$())("isResizing",e.isResizing_$())}}var ie=(()=>{class n extends Fe{ocSession_DS=v(k);detailUi_DS=v(z);peiContext_DS=v(G);route=v(X);sessionId_$=m("");metadataWidth_$=m(256);timelineWidth_$=m(288);isResizing_$=m(!1);ngOnInit(){this.metadataWidth_$.set(Math.max(160,Math.min(500,S.loadPanelWidth("metadata",256)))),this.timelineWidth_$.set(Math.max(200,Math.min(600,S.loadPanelWidth("timeline",288)))),this.addSubscription(this.route.paramMap.subscribe(e=>{let i=e.get("sessionId")??"",t=e.get("ccapId")??"";t&&this.peiContext_DS.activeCcapId_$()!==t&&this.peiContext_DS.selectInstance(t),i&&i!==this.sessionId_$()&&this.loadSession(i)}))}ngOnDestroy(){super.ngOnDestroy(),this.ocSession_DS.setActiveSessionId("")}handleMetadataResizeStart(e){let i=this.metadataWidth_$(),t=e.clientX;this.isResizing_$.set(!0),B.attachUntilPointerUp({startEvent:e,onMove:r=>{let C=r.clientX-t,g=Math.max(160,Math.min(500,i+C));this.metadataWidth_$.set(g)},onEnd:()=>{this.isResizing_$.set(!1),S.savePanelWidth("metadata",this.metadataWidth_$())}})}handleTimelineResizeStart(e){let i=this.timelineWidth_$(),t=e.clientX;this.isResizing_$.set(!0),B.attachUntilPointerUp({startEvent:e,onMove:r=>{let C=t-r.clientX,g=Math.max(200,Math.min(600,i+C));this.timelineWidth_$.set(g)},onEnd:()=>{this.isResizing_$.set(!1),S.savePanelWidth("timeline",this.timelineWidth_$())}})}loadSession(e){this.sessionId_$.set(e),this.ocSession_DS.clearLiveOutput(),this.ocSession_DS.setActiveSessionId(e),S.saveLastSessionId(e),this.resolveInstanceIdAndLoadHistory(e,0)}resolveInstanceIdAndLoadHistory(e,i){let t=this.ocSession_DS.activeInstanceId_$();if(t||(t=S.loadSelectedInstanceId(),t&&this.ocSession_DS.activeInstanceId_$.set(t)),t){this.ocSession_DS.loadGatewaySessionHistory({sessionId:e,instanceId:t}).then(()=>{this.ocSession_DS.loadSessionDetail({sessionId:e,isSilent:!0})});return}if(i<10){setTimeout(()=>{this.resolveInstanceIdAndLoadHistory(e,i+1)},300);return}this.ocSession_DS.pushConsoleMessage({type:"error",text:"No OpenClaw instance selected \u2014 select an instance in the sidebar to load session history."})}static \u0275fac=(()=>{let e;return function(t){return(e||(e=fe(n)))(t||n)}})();static \u0275cmp=A({type:n,selectors:[["app-ccap-oc-detail"]],hostAttrs:[1,"flex","flex-col","flex-1","min-h-0","overflow-hidden"],features:[be],decls:3,vars:1,consts:[[1,"flex","items-center","justify-center","h-full","text-neutral-500","text-sm"],[3,"isStartOpen","isEndOpen","startWidthPx","endWidthPx","isResizing"],[3,"startResizeStart","endResizeStart","isStartOpen","isEndOpen","startWidthPx","endWidthPx","isResizing"],["sDetailColumnStart",""],["sDetailColumnMain",""],["sDetailColumnEnd",""]],template:function(i,t){i&1&&h(0,Mn,2,0,"div",0)(1,Ln,2,0,"div",0)(2,Vn,7,5,"app-s-session-detail-three-column-layout",1),i&2&&u(t.sessionId_$()?t.ocSession_DS.selectedSessionLoading_$()?1:2:0)},dependencies:[qe,st,lt,ct],encapsulation:2})}return n})();var Rn=[{path:"",component:ot,children:[{path:"",pathMatch:"full",component:ie},{path:":ccapId/:sessionId",component:ie},{path:":sessionId",component:ie}]}],Vo=(()=>{class n{static \u0275fac=function(i){return new(i||n)};static \u0275mod=xe({type:n});static \u0275inj=me({imports:[De,Le,Pe.forChild(Rn),K,J,ee,te,Qe]})}return n})();export{Vo as OcSession_Module};
|
|
3
|
-
//# sourceMappingURL=oc.module-CDGBJ6I4.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{a as i,b as c}from"./chunk-LIQPVSH3.js";import"./chunk-Q2PKIGLB.js";import"./chunk-7HSUCNW5.js";import"./chunk-CRYF37M7.js";import"./chunk-7JUIBZEE.js";import"./chunk-C7XPBJTG.js";import"./chunk-JMZKJLUE.js";import"./chunk-WPHEQXWB.js";import"./chunk-VGTXKD6D.js";import"./chunk-DJVWZQNB.js";import"./chunk-MZLFEWAN.js";import"./chunk-OEEQNIJG.js";import"./chunk-Q2NVIOCY.js";import"./chunk-U2EBQMSE.js";import"./chunk-SYCUR4MY.js";import"./chunk-R5WCLLO5.js";import"./chunk-V3VQWJQL.js";import"./chunk-6GSTJE3R.js";import"./chunk-ZBTWQZNB.js";import"./chunk-FLAJXIYW.js";import"./chunk-EO4DNTT4.js";import"./chunk-KYVIZZWW.js";import"./chunk-5UPNU54P.js";import"./chunk-7SAFEFWU.js";import"./chunk-SLSTIBOT.js";import{E as e,Kb as r,z as t}from"./chunk-TBMJSIBB.js";var n=[{path:"",component:i}],s=(()=>{class o{static \u0275fac=function(m){return new(m||o)};static \u0275mod=e({type:o});static \u0275inj=t({imports:[c,r.forChild(n)]})}return o})();export{s as ProjectSource_RoutedModule};
|
|
2
|
-
//# sourceMappingURL=project-source-routed.module-FDCQCUUB.js.map
|