@futdevpro/ccap 1.1.3223 → 1.1.3441
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/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-4ADMPXCV.js} +2 -2
- package/client-dist/ca.module-RVGC3WQC.js +5 -0
- package/client-dist/{ca.module-MVE3OLDD.js.map → ca.module-RVGC3WQC.js.map} +3 -3
- package/client-dist/cc-usage-dashboard.component-OQS2BC4L.js +2 -0
- package/client-dist/cc-usage-dashboard.component-OQS2BC4L.js.map +7 -0
- package/client-dist/cc.module-SPB35JNX.js +4 -0
- package/client-dist/cc.module-SPB35JNX.js.map +7 -0
- package/client-dist/{chunk-7HSUCNW5.js → chunk-2ATSF4KC.js} +7 -3
- package/client-dist/{chunk-7HSUCNW5.js.map → chunk-2ATSF4KC.js.map} +2 -2
- package/client-dist/{chunk-CRYF37M7.js → chunk-3HJWN4W6.js} +2 -2
- package/client-dist/{chunk-D2UUXA6L.js → chunk-4EV32FFZ.js} +2 -2
- package/client-dist/{chunk-AX7QIINI.js → chunk-4H3E32UH.js} +2 -2
- package/client-dist/{chunk-KYVIZZWW.js → chunk-4LCJ4GNK.js} +19 -19
- package/client-dist/chunk-4LCJ4GNK.js.map +7 -0
- package/client-dist/{chunk-OUBNMT7L.js → chunk-5NW5UGVZ.js} +2 -2
- package/client-dist/{chunk-HLNT234H.js → chunk-AM5URSKV.js} +2 -2
- package/client-dist/{chunk-SYCUR4MY.js → chunk-AMROWQBM.js} +2 -2
- package/client-dist/{chunk-PTCJL62W.js → chunk-AR6EOT63.js} +2 -2
- package/client-dist/{chunk-OLK5MJ4J.js → chunk-B25EGDHU.js} +2 -2
- package/client-dist/{chunk-4SFV57IQ.js → chunk-BQTJHETS.js} +2 -2
- package/client-dist/{chunk-XTUQJ3W6.js → chunk-COOWEMEW.js} +2 -2
- package/client-dist/{chunk-TOFOK5W7.js → chunk-E3JXFFHE.js} +2 -2
- package/client-dist/{chunk-OQW6FXRJ.js → chunk-ESIGVRCK.js} +2 -2
- package/client-dist/{chunk-JMZKJLUE.js → chunk-EVMDNGBK.js} +2 -2
- package/client-dist/{chunk-6GSTJE3R.js → chunk-F6VMAVI5.js} +2 -2
- package/client-dist/chunk-FRVRMJQF.js +2 -0
- package/client-dist/chunk-FRVRMJQF.js.map +7 -0
- package/client-dist/chunk-G5SK3OBM.js +2 -0
- package/client-dist/chunk-G5SK3OBM.js.map +7 -0
- package/client-dist/{chunk-VO5ZLOZM.js → chunk-GBOES7QW.js} +2 -2
- package/client-dist/{chunk-2OAF6FCL.js → chunk-GTERKRTR.js} +2 -2
- package/client-dist/{chunk-7X22BWF7.js → chunk-HD4CODAD.js} +2 -2
- package/client-dist/{chunk-2EMFCVYO.js → chunk-I3FSMGMK.js} +2 -2
- package/client-dist/{chunk-VGTXKD6D.js → chunk-IFYHOOVA.js} +2 -2
- package/client-dist/{chunk-IINV7GMO.js → chunk-IUAZJ3PT.js} +2 -2
- package/client-dist/chunk-IUAZJ3PT.js.map +7 -0
- package/client-dist/{chunk-PFBJ7ZHP.js → chunk-IVLMVAVJ.js} +2 -2
- package/client-dist/chunk-KBMXCICX.js +2 -0
- package/client-dist/chunk-KBMXCICX.js.map +7 -0
- package/client-dist/{chunk-3D32XY5M.js → chunk-KIKSSJKL.js} +2 -2
- package/client-dist/{chunk-U2EBQMSE.js → chunk-LPNQ5PRN.js} +2 -2
- package/client-dist/{chunk-4JKJRGJX.js → chunk-MO37SUK2.js} +2 -2
- package/client-dist/{chunk-BC7H7K5F.js → chunk-MYVEHPA7.js} +2 -2
- package/client-dist/{chunk-JEHOIN7Y.js → chunk-N55GOFVU.js} +2 -2
- package/client-dist/{chunk-R5WCLLO5.js → chunk-NNUHTCXG.js} +2 -2
- package/client-dist/{chunk-TP2634XD.js → chunk-OKTAADTQ.js} +2 -2
- package/client-dist/{chunk-DURLBTAJ.js → chunk-ONS7XQYD.js} +2 -2
- package/client-dist/chunk-OYB7GU43.js +2 -0
- package/client-dist/chunk-OYB7GU43.js.map +7 -0
- package/client-dist/{chunk-7SAFEFWU.js → chunk-PVSQ5ZEZ.js} +14 -14
- package/client-dist/{chunk-7SAFEFWU.js.map → chunk-PVSQ5ZEZ.js.map} +3 -3
- package/client-dist/{chunk-PG7CJVEP.js → chunk-PZN2OI7U.js} +2 -2
- package/client-dist/{chunk-C4JDDOQR.js → chunk-QUD3BEHN.js} +2 -2
- package/client-dist/{chunk-DJVWZQNB.js → chunk-QUEYZI42.js} +2 -2
- package/client-dist/chunk-R2IBKJ4K.js +2 -0
- package/client-dist/chunk-R2IBKJ4K.js.map +7 -0
- package/client-dist/{chunk-3TMVRWAB.js → chunk-RAHCHCWR.js} +2 -2
- package/client-dist/{chunk-SQWHJTFE.js → chunk-RCCUSGIN.js} +2 -2
- package/client-dist/{chunk-GADEZIXI.js → chunk-RL5LPTPO.js} +2 -2
- package/client-dist/{chunk-5C3KCWYF.js → chunk-SDVXPGB7.js} +2 -2
- package/client-dist/{chunk-CLQC45GB.js → chunk-TNLHQRL7.js} +2 -2
- package/client-dist/{chunk-JZHYGU3K.js → chunk-TWK7BOB7.js} +2 -2
- package/client-dist/{chunk-ILG5WENK.js → chunk-U62YECNK.js} +2 -2
- package/client-dist/{chunk-RSPVPEQ4.js → chunk-UOC6UYZT.js} +2 -2
- package/client-dist/{chunk-AI7WKHRQ.js → chunk-VDQROW6J.js} +2 -2
- package/client-dist/{chunk-3PA6BJES.js → chunk-VMXIXZV2.js} +2 -2
- package/client-dist/chunk-VQ4GBHH7.js +2 -0
- package/client-dist/chunk-VQ4GBHH7.js.map +7 -0
- package/client-dist/{chunk-CFHQS3UB.js → chunk-WRI37SX4.js} +2 -2
- package/client-dist/{chunk-MS5OG7JD.js → chunk-XLSL262Q.js} +2 -2
- package/client-dist/{chunk-SLSTIBOT.js → chunk-Y6V4NGLU.js} +2 -2
- package/client-dist/{chunk-SLSTIBOT.js.map → chunk-Y6V4NGLU.js.map} +1 -1
- package/client-dist/{chunk-3PLWSRB4.js → chunk-YN4H6MW2.js} +2 -2
- package/client-dist/{chunk-OEEQNIJG.js → chunk-Z5FUR5ZW.js} +2 -2
- package/client-dist/{chunk-MY75XBDH.js → chunk-ZCHMBEHT.js} +2 -2
- package/client-dist/{chunk-LIQPVSH3.js → chunk-ZPJ6KYMA.js} +2 -2
- package/client-dist/consultant.module-UWXLFLDS.js +3 -0
- package/client-dist/{consultant.module-WUUVSVHL.js.map → consultant.module-UWXLFLDS.js.map} +3 -3
- package/client-dist/{crd.module-IRGVOYD5.js → crd.module-2I2BDC3A.js} +2 -2
- package/client-dist/{dashboard.module-NPPSZHO6.js → dashboard.module-X2A6LOTA.js} +2 -2
- package/client-dist/{do.module-GKQTJOXR.js → do.module-CJWEKZ4L.js} +2 -2
- package/client-dist/{document-library.module-JK3K7QNJ.js → document-library.module-WJSFZPA7.js} +2 -2
- package/client-dist/{embedding-eval.module-LVESAMPN.js → embedding-eval.module-FOALIAQW.js} +2 -2
- package/client-dist/{embedding-registry.module-3ECACZZ3.js → embedding-registry.module-SS646R4H.js} +2 -2
- package/client-dist/err.module-SR4ZAOQH.js +6 -0
- package/client-dist/err.module-SR4ZAOQH.js.map +7 -0
- package/client-dist/{feedback.module-AHG7462C.js → feedback.module-T3MZQKXV.js} +2 -2
- package/client-dist/{host-runtime-mcp.module-XFUI7B65.js → host-runtime-mcp.module-FBZZGQGD.js} +2 -2
- package/client-dist/index.html +2 -2
- package/client-dist/{live-dev-pipeline.module-OMK67DGM.js → live-dev-pipeline.module-OKQYFSJL.js} +2 -2
- package/client-dist/{logs.module-FWACECVV.js → logs.module-SHHOD5XW.js} +2 -2
- package/client-dist/{main-H4AYPQ2E.js → main-L3WW2VTB.js} +4 -4
- package/client-dist/{main-H4AYPQ2E.js.map → main-L3WW2VTB.js.map} +3 -3
- package/client-dist/{master-control-remote-poc.module-GQ6RMPRB.js → master-control-remote-poc.module-ITXHYU5K.js} +2 -2
- package/client-dist/{mobile-app.module-YSARX6QC.js → mobile-app.module-Q3W3PU4O.js} +2 -2
- package/client-dist/{model-registry.module-SJOUSDXZ.js → model-registry.module-DGN55LTQ.js} +2 -2
- package/client-dist/oc.module-DYSATWML.js +3 -0
- package/client-dist/{oc.module-CDGBJ6I4.js.map → oc.module-DYSATWML.js.map} +3 -3
- package/client-dist/orc.module-NQO6OLPK.js +2 -0
- package/client-dist/orc.module-NQO6OLPK.js.map +7 -0
- package/client-dist/{project-management.module-LWZLB6VU.js → project-management.module-T7NBKKSR.js} +2 -2
- package/client-dist/project-source-routed.module-YO54LEGN.js +2 -0
- package/client-dist/{scheduler.module-VH647PWD.js → scheduler.module-4CMBOTGZ.js} +2 -2
- package/client-dist/session.module-V4SRPQRZ.js +12 -0
- package/client-dist/session.module-V4SRPQRZ.js.map +7 -0
- package/client-dist/{set.module-XHJR4XUD.js → set.module-32SVEWTG.js} +5 -5
- package/client-dist/{set.module-XHJR4XUD.js.map → set.module-32SVEWTG.js.map} +3 -3
- package/client-dist/{setup.module-RRQZ62B2.js → setup.module-5T6MCMR4.js} +2 -2
- package/client-dist/styles-CTUT42AQ.css +2 -0
- package/client-dist/styles-CTUT42AQ.css.map +7 -0
- package/client-dist/{terminals.module-QKIQS6FH.js → terminals.module-AQO2TVO2.js} +2 -2
- package/client-dist/{voice-notes-poc.module-K3FB6OIB.js → voice-notes-poc.module-EI2HY7YJ.js} +2 -2
- package/client-dist/{wfs.module-JVR53PGJ.js → wfs.module-AHRZE5WB.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/agent-core/_modules/run/_services/control-services/run-flow.control-service.d.ts.map +1 -1
- package/server/build/src/_modules/ccap-agent/_modules/agent-core/_modules/run/_services/control-services/run-flow.control-service.js +8 -1
- package/server/build/src/_modules/ccap-agent/_modules/agent-core/_modules/run/_services/control-services/run-flow.control-service.js.map +1 -1
- package/server/build/src/_modules/ccap-agent/_modules/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/_collections/utils/voc-mp3-id3-strip.util.d.ts +47 -0
- package/server/build/src/_modules/ccap-agent/_modules/integrations/_modules/voice/_collections/utils/voc-mp3-id3-strip.util.d.ts.map +1 -0
- package/server/build/src/_modules/ccap-agent/_modules/integrations/_modules/voice/_collections/utils/voc-mp3-id3-strip.util.js +100 -0
- package/server/build/src/_modules/ccap-agent/_modules/integrations/_modules/voice/_collections/utils/voc-mp3-id3-strip.util.js.map +1 -0
- package/server/build/src/_modules/ccap-agent/_modules/integrations/_modules/voice/_collections/utils/voc-mp3-id3-strip.util.spec.d.ts +2 -0
- package/server/build/src/_modules/ccap-agent/_modules/integrations/_modules/voice/_collections/utils/voc-mp3-id3-strip.util.spec.d.ts.map +1 -0
- package/server/build/src/_modules/ccap-agent/_modules/integrations/_modules/voice/_collections/utils/voc-mp3-id3-strip.util.spec.js +162 -0
- package/server/build/src/_modules/ccap-agent/_modules/integrations/_modules/voice/_collections/utils/voc-mp3-id3-strip.util.spec.js.map +1 -0
- package/server/build/src/_modules/ccap-agent/_modules/integrations/_modules/voice/_services/control-services/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/ccap-agent/_modules/integrations/_modules/voice/_services/control-services/tts/voc-tts.control-service.d.ts.map +1 -1
- package/server/build/src/_modules/ccap-agent/_modules/integrations/_modules/voice/_services/control-services/tts/voc-tts.control-service.js +22 -4
- package/server/build/src/_modules/ccap-agent/_modules/integrations/_modules/voice/_services/control-services/tts/voc-tts.control-service.js.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/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/cc-stream-parser.util.d.ts +17 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/cc-stream-parser.util.d.ts.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/cc-stream-parser.util.js +65 -5
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/cc-stream-parser.util.js.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/cc-stream-parser.util.spec.d.ts +9 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/cc-stream-parser.util.spec.d.ts.map +1 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/cc-stream-parser.util.spec.js +213 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/cc-stream-parser.util.spec.js.map +1 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_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 +21 -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 +33 -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 +54 -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 +163 -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 +20 -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 +62 -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 +40 -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/notification/_collections/utils/ntf-system-event.util.d.ts +10 -0
- package/server/build/src/_modules/notification/_collections/utils/ntf-system-event.util.d.ts.map +1 -1
- package/server/build/src/_modules/notification/_collections/utils/ntf-system-event.util.js +18 -0
- package/server/build/src/_modules/notification/_collections/utils/ntf-system-event.util.js.map +1 -1
- package/server/build/src/_modules/notification/_collections/utils/ntf-system-event.util.spec.js +32 -3
- package/server/build/src/_modules/notification/_collections/utils/ntf-system-event.util.spec.js.map +1 -1
- package/server/build/src/_modules/peer-instance/_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-event-relay.control-service.spec.d.ts +15 -0
- package/server/build/src/_modules/peer-instance/_services/pei-event-relay.control-service.spec.d.ts.map +1 -0
- package/server/build/src/_modules/peer-instance/_services/pei-event-relay.control-service.spec.js +122 -0
- package/server/build/src/_modules/peer-instance/_services/pei-event-relay.control-service.spec.js.map +1 -0
- package/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-4GPIIB3D.js +0 -2
- package/client-dist/chunk-4GPIIB3D.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-GZDOO5NB.js +0 -2
- package/client-dist/chunk-GZDOO5NB.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/err.module-B666YXQT.js +0 -6
- package/client-dist/err.module-B666YXQT.js.map +0 -7
- package/client-dist/oc.module-CDGBJ6I4.js +0 -3
- package/client-dist/orc.module-5S7GBE4E.js +0 -2
- package/client-dist/orc.module-5S7GBE4E.js.map +0 -7
- 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-4ADMPXCV.js.map} +0 -0
- /package/client-dist/{chunk-CRYF37M7.js.map → chunk-3HJWN4W6.js.map} +0 -0
- /package/client-dist/{chunk-D2UUXA6L.js.map → chunk-4EV32FFZ.js.map} +0 -0
- /package/client-dist/{chunk-AX7QIINI.js.map → chunk-4H3E32UH.js.map} +0 -0
- /package/client-dist/{chunk-OUBNMT7L.js.map → chunk-5NW5UGVZ.js.map} +0 -0
- /package/client-dist/{chunk-HLNT234H.js.map → chunk-AM5URSKV.js.map} +0 -0
- /package/client-dist/{chunk-SYCUR4MY.js.map → chunk-AMROWQBM.js.map} +0 -0
- /package/client-dist/{chunk-PTCJL62W.js.map → chunk-AR6EOT63.js.map} +0 -0
- /package/client-dist/{chunk-OLK5MJ4J.js.map → chunk-B25EGDHU.js.map} +0 -0
- /package/client-dist/{chunk-4SFV57IQ.js.map → chunk-BQTJHETS.js.map} +0 -0
- /package/client-dist/{chunk-XTUQJ3W6.js.map → chunk-COOWEMEW.js.map} +0 -0
- /package/client-dist/{chunk-TOFOK5W7.js.map → chunk-E3JXFFHE.js.map} +0 -0
- /package/client-dist/{chunk-OQW6FXRJ.js.map → chunk-ESIGVRCK.js.map} +0 -0
- /package/client-dist/{chunk-JMZKJLUE.js.map → chunk-EVMDNGBK.js.map} +0 -0
- /package/client-dist/{chunk-6GSTJE3R.js.map → chunk-F6VMAVI5.js.map} +0 -0
- /package/client-dist/{chunk-VO5ZLOZM.js.map → chunk-GBOES7QW.js.map} +0 -0
- /package/client-dist/{chunk-2OAF6FCL.js.map → chunk-GTERKRTR.js.map} +0 -0
- /package/client-dist/{chunk-7X22BWF7.js.map → chunk-HD4CODAD.js.map} +0 -0
- /package/client-dist/{chunk-2EMFCVYO.js.map → chunk-I3FSMGMK.js.map} +0 -0
- /package/client-dist/{chunk-VGTXKD6D.js.map → chunk-IFYHOOVA.js.map} +0 -0
- /package/client-dist/{chunk-PFBJ7ZHP.js.map → chunk-IVLMVAVJ.js.map} +0 -0
- /package/client-dist/{chunk-3D32XY5M.js.map → chunk-KIKSSJKL.js.map} +0 -0
- /package/client-dist/{chunk-U2EBQMSE.js.map → chunk-LPNQ5PRN.js.map} +0 -0
- /package/client-dist/{chunk-4JKJRGJX.js.map → chunk-MO37SUK2.js.map} +0 -0
- /package/client-dist/{chunk-BC7H7K5F.js.map → chunk-MYVEHPA7.js.map} +0 -0
- /package/client-dist/{chunk-JEHOIN7Y.js.map → chunk-N55GOFVU.js.map} +0 -0
- /package/client-dist/{chunk-R5WCLLO5.js.map → chunk-NNUHTCXG.js.map} +0 -0
- /package/client-dist/{chunk-TP2634XD.js.map → chunk-OKTAADTQ.js.map} +0 -0
- /package/client-dist/{chunk-DURLBTAJ.js.map → chunk-ONS7XQYD.js.map} +0 -0
- /package/client-dist/{chunk-PG7CJVEP.js.map → chunk-PZN2OI7U.js.map} +0 -0
- /package/client-dist/{chunk-C4JDDOQR.js.map → chunk-QUD3BEHN.js.map} +0 -0
- /package/client-dist/{chunk-DJVWZQNB.js.map → chunk-QUEYZI42.js.map} +0 -0
- /package/client-dist/{chunk-3TMVRWAB.js.map → chunk-RAHCHCWR.js.map} +0 -0
- /package/client-dist/{chunk-SQWHJTFE.js.map → chunk-RCCUSGIN.js.map} +0 -0
- /package/client-dist/{chunk-GADEZIXI.js.map → chunk-RL5LPTPO.js.map} +0 -0
- /package/client-dist/{chunk-5C3KCWYF.js.map → chunk-SDVXPGB7.js.map} +0 -0
- /package/client-dist/{chunk-CLQC45GB.js.map → chunk-TNLHQRL7.js.map} +0 -0
- /package/client-dist/{chunk-JZHYGU3K.js.map → chunk-TWK7BOB7.js.map} +0 -0
- /package/client-dist/{chunk-ILG5WENK.js.map → chunk-U62YECNK.js.map} +0 -0
- /package/client-dist/{chunk-RSPVPEQ4.js.map → chunk-UOC6UYZT.js.map} +0 -0
- /package/client-dist/{chunk-AI7WKHRQ.js.map → chunk-VDQROW6J.js.map} +0 -0
- /package/client-dist/{chunk-3PA6BJES.js.map → chunk-VMXIXZV2.js.map} +0 -0
- /package/client-dist/{chunk-CFHQS3UB.js.map → chunk-WRI37SX4.js.map} +0 -0
- /package/client-dist/{chunk-MS5OG7JD.js.map → chunk-XLSL262Q.js.map} +0 -0
- /package/client-dist/{chunk-3PLWSRB4.js.map → chunk-YN4H6MW2.js.map} +0 -0
- /package/client-dist/{chunk-OEEQNIJG.js.map → chunk-Z5FUR5ZW.js.map} +0 -0
- /package/client-dist/{chunk-MY75XBDH.js.map → chunk-ZCHMBEHT.js.map} +0 -0
- /package/client-dist/{chunk-LIQPVSH3.js.map → chunk-ZPJ6KYMA.js.map} +0 -0
- /package/client-dist/{crd.module-IRGVOYD5.js.map → crd.module-2I2BDC3A.js.map} +0 -0
- /package/client-dist/{dashboard.module-NPPSZHO6.js.map → dashboard.module-X2A6LOTA.js.map} +0 -0
- /package/client-dist/{do.module-GKQTJOXR.js.map → do.module-CJWEKZ4L.js.map} +0 -0
- /package/client-dist/{document-library.module-JK3K7QNJ.js.map → document-library.module-WJSFZPA7.js.map} +0 -0
- /package/client-dist/{embedding-eval.module-LVESAMPN.js.map → embedding-eval.module-FOALIAQW.js.map} +0 -0
- /package/client-dist/{embedding-registry.module-3ECACZZ3.js.map → embedding-registry.module-SS646R4H.js.map} +0 -0
- /package/client-dist/{feedback.module-AHG7462C.js.map → feedback.module-T3MZQKXV.js.map} +0 -0
- /package/client-dist/{host-runtime-mcp.module-XFUI7B65.js.map → host-runtime-mcp.module-FBZZGQGD.js.map} +0 -0
- /package/client-dist/{live-dev-pipeline.module-OMK67DGM.js.map → live-dev-pipeline.module-OKQYFSJL.js.map} +0 -0
- /package/client-dist/{logs.module-FWACECVV.js.map → logs.module-SHHOD5XW.js.map} +0 -0
- /package/client-dist/{master-control-remote-poc.module-GQ6RMPRB.js.map → master-control-remote-poc.module-ITXHYU5K.js.map} +0 -0
- /package/client-dist/{mobile-app.module-YSARX6QC.js.map → mobile-app.module-Q3W3PU4O.js.map} +0 -0
- /package/client-dist/{model-registry.module-SJOUSDXZ.js.map → model-registry.module-DGN55LTQ.js.map} +0 -0
- /package/client-dist/{project-management.module-LWZLB6VU.js.map → project-management.module-T7NBKKSR.js.map} +0 -0
- /package/client-dist/{project-source-routed.module-FDCQCUUB.js.map → project-source-routed.module-YO54LEGN.js.map} +0 -0
- /package/client-dist/{scheduler.module-VH647PWD.js.map → scheduler.module-4CMBOTGZ.js.map} +0 -0
- /package/client-dist/{setup.module-RRQZ62B2.js.map → setup.module-5T6MCMR4.js.map} +0 -0
- /package/client-dist/{terminals.module-QKIQS6FH.js.map → terminals.module-AQO2TVO2.js.map} +0 -0
- /package/client-dist/{voice-notes-poc.module-K3FB6OIB.js.map → voice-notes-poc.module-EI2HY7YJ.js.map} +0 -0
- /package/client-dist/{wfs.module-JVR53PGJ.js.map → wfs.module-AHRZE5WB.js.map} +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as he}from"./chunk-TP2634XD.js";import{a as ge,b as Ce}from"./chunk-4JKJRGJX.js";import{a as me,b as _e}from"./chunk-3PA6BJES.js";import{a as Se,b as Y}from"./chunk-L44637OO.js";import{a as ue}from"./chunk-5C3KCWYF.js";import{b as pe}from"./chunk-OLK5MJ4J.js";import{d as fe}from"./chunk-2OAF6FCL.js";import{d as U,h as xe}from"./chunk-JMZKJLUE.js";import{a as ce}from"./chunk-FLAJXIYW.js";import{f as oe,i as ae,n as re,o as se,p as le,v as de}from"./chunk-EO4DNTT4.js";import{p as Te}from"./chunk-SLSTIBOT.js";import{$a as z,C as y,D as b,Fa as s,Ga as I,Ha as S,Ia as te,J as C,K as v,L as E,M as Q,Q as Z,T as q,Ta as w,U as A,Ua as O,Va as ne,Z as r,aa as $,ab as ie,bb as B,da as _,fa as R,ga as p,h as $e,hb as h,ia as M,k as H,la as u,mb as K,na as ee,oa as F,pa as V,pb as J,qa as a,ra as o,sa as x,ua as k,ub as N,va as f,wa as c,y as X}from"./chunk-TBMJSIBB.js";var ye=$e(Te());var W=(()=>{class t{static SESSION_LIMIT_TYPE="five_hour";static WEEKLY_LIMIT_TYPE="seven_day";static formatResetText(e){if(!e?.resetsAt)return"";let n=new Date(e.resetsAt*1e3),i=new Date,l=n.getTime()-i.getTime();if(l<=0)return"expired";let m=Math.floor(l/6e4),T=Math.floor(m/60),j=m%60;return T>0?`${T}h ${j}m`:`${j}m`}static formatResetTextPrecise(e){if(!e?.resetsAt)return"";let n=new Date(e.resetsAt*1e3),i=new Date,l=Math.floor((n.getTime()-i.getTime())/1e3);if(l<=0)return"expired";let m=Math.floor(l/86400),T=Math.floor(l%86400/3600),j=Math.floor(l%3600/60),g=l%60,D=[];return m&&D.push(`${m}d`),(m||T)&&D.push(`${T}h`),(m||T||j)&&D.push(`${j}m`),D.push(`${g}s`),D.join(" ")}static computeUtilizationPercent(e){if(!e)return 0;let n=typeof e.utilization=="number"?e.utilization:0,i=Math.max(0,Math.min(1,n));return Math.round(i*100)}static computeThresholdPercent(e){if(!e)return 0;let n=typeof e.surpassedThreshold=="number"?e.surpassedThreshold:0,i=Math.max(0,Math.min(1,n));return Math.round(i*100)}static isOverThreshold(e){if(!e)return!1;let n=typeof e.utilization=="number"?e.utilization:0,i=typeof e.surpassedThreshold=="number"?e.surpassedThreshold:1;return n>=i&&i>0}static formatLimitScopeLabel(e){return e?.rateLimitType?e.rateLimitType===t.SESSION_LIMIT_TYPE?"Session":e.rateLimitType===t.WEEKLY_LIMIT_TYPE?"Weekly":e.rateLimitType:""}}return t})();function Me(t,d){if(t&1&&(a(0,"div",0)(1,"span",1),s(2," Rate limit "),o(),a(3,"span",2),s(4,"Scope"),o(),a(5,"span",3),s(6),o(),a(7,"span",2),s(8,"St\xE1tusz"),o(),a(9,"span",3),s(10),o(),a(11,"span",2),s(12,"Utilization"),o(),a(13,"span",4),s(14),o(),a(15,"span",2),s(16,"Reset"),o(),a(17,"span",4),s(18),o(),a(19,"span",2),s(20,"Utols\xF3 \xE9szlel\xE9s"),o(),a(21,"span",5),s(22),z(23,"date"),o()()),t&2){let e=d,n=c();r(6),I(n.limitScopeLabel_$()||"\u2014"),r(3),M("text-neonRed",e.status==="limited")("text-yellow-400",e.status==="allowed_warning")("text-neutral-300",e.status==="allowed"),r(),S(" ",e.status||"\u2014"," "),r(4),S("",n.utilizationPercent_$(),"%"),r(4),I(n.resetText_$()||"\u2014"),r(4),S(" ",B(23,11,e.receivedAt,"yyyy-MM-dd HH:mm:ss")||"\u2014"," ")}}var be=(()=>{class t{claudeCode_AS=y(me);_ccapId="";set ccapId(e){this._ccapId=e?.trim()??"",this.refreshRateLimitState()}get ccapId(){return this._ccapId}rateLimitInfo_$=$(null);utilizationPercent_$=h(()=>W.computeUtilizationPercent(this.rateLimitInfo_$()));resetText_$=h(()=>W.formatResetText(this.rateLimitInfo_$()));limitScopeLabel_$=h(()=>W.formatLimitScopeLabel(this.rateLimitInfo_$()));refreshRateLimitState(){if(!this._ccapId){this.rateLimitInfo_$.set(null);return}this.claudeCode_AS.getRateLimitState({ccapId:this._ccapId}).then(e=>{let n=_e.mapServerItemsToClientInfo(e.items);this.rateLimitInfo_$.set(n)}).catch(e=>{ye.DyFM_Log.warn(`s-cc-rate-limit-info | rate-limit fetch failed | ccapId: ${this._ccapId} | err: ${String(e)}`),this.rateLimitInfo_$.set(null)})}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=b({type:t,selectors:[["app-s-cc-rate-limit-info"]],inputs:{ccapId:"ccapId"},standalone:!0,features:[w],decls:1,vars:1,consts:[[1,"grid","grid-cols-[minmax(8rem,auto)_1fr]","gap-x-3","gap-y-2","text-xs","text-neutral-200"],[1,"col-span-2","text-[11px]","uppercase","tracking-wider","text-neutral-500"],[1,"text-neutral-500","shrink-0"],[1,"whitespace-nowrap"],[1,"whitespace-nowrap","font-mono"],[1,"font-mono","text-[11px]","whitespace-nowrap"]],template:function(n,i){if(n&1&&_(0,Me,24,14,"div",0),n&2){let l;u((l=i.rateLimitInfo_$())?0:-1,l)}},dependencies:[N,J],encapsulation:2})}return t})();function Oe(t,d){if(t&1&&(a(0,"span",1),s(1,"Instance presence"),o(),a(2,"span",4),x(3,"app-s-instance-presence-badge",8),o()),t&2){let e=d;r(3),p("presence",e.presence)("lastHeartbeatAt",e.lastHeartbeatAt)("wsConnected",e.wsConnected)}}function De(t,d){if(t&1&&(a(0,"span",9),s(1,"Run / tev\xE9kenys\xE9g"),o(),a(2,"span",10)(3,"span",11),s(4),o(),a(5,"span",12),s(6),o()(),a(7,"span",1),s(8,"Utols\xF3 aktivit\xE1s"),o(),a(9,"span",13),s(10),z(11,"date"),o(),a(12,"span",1),s(13,"Utols\xF3 \xFCzenet"),o(),a(14,"span",14),s(15),o()),t&2){let e=d;r(4),I(e.activeRunPhase||"\u2014"),r(2),I(e.activitySummary||"\u2014"),r(4),S(" ",B(11,4,e.lastActivityAt,"yyyy-MM-dd HH:mm:ss")||"\u2014"," "),r(5),I(e.lastMessage||"\u2014")}}var we=(()=>{class t{row;presence=void 0;static \u0275fac=function(n){return new(n||t)};static \u0275cmp=b({type:t,selectors:[["app-s-instance-detail-view"]],inputs:{row:"row",presence:"presence"},standalone:!0,features:[w],decls:43,vars:18,consts:[[1,"grid","grid-cols-[minmax(8rem,auto)_1fr]","gap-x-3","gap-y-2","text-xs","text-neutral-200"],[1,"text-neutral-500","shrink-0"],[1,"font-mono","break-all"],[1,"break-all"],[1,"whitespace-nowrap"],[1,"font-mono","whitespace-nowrap"],[1,"mt-2","pt-2","border-t","border-neutral-800"],[3,"ccapId"],[3,"presence","lastHeartbeatAt","wsConnected"],[1,"text-neutral-500","shrink-0","self-start","pt-0.5"],[1,"break-words"],[1,"font-mono","text-[11px]","text-neutral-400","block"],[1,"text-neutral-300"],[1,"font-mono","text-[11px]","whitespace-nowrap"],[1,"break-words","text-neutral-300"]],template:function(n,i){if(n&1&&(a(0,"div",0)(1,"span",1),s(2,"instanceKey"),o(),a(3,"span",2),s(4),o(),a(5,"span",1),s(6,"N\xE9v"),o(),a(7,"span",3),s(8),o(),a(9,"span",1),s(10,"St\xE1tusz"),o(),a(11,"span",4),s(12),o(),_(13,Oe,4,3),a(14,"span",1),s(15,"Session presence"),o(),a(16,"span",4),s(17),o(),_(18,De,16,7),a(19,"span",1),s(20,"MAC"),o(),a(21,"span",2),s(22),o(),a(23,"span",1),s(24,"Install path"),o(),a(25,"span",2),s(26),o(),a(27,"span",1),s(28,"hostName"),o(),a(29,"span",3),s(30),o(),a(31,"span",1),s(32,"registry __created"),o(),a(33,"span",5),s(34),z(35,"date"),o(),a(36,"span",1),s(37,"registry __updated"),o(),a(38,"span",5),s(39),z(40,"date"),o()(),a(41,"div",6),x(42,"app-s-cc-rate-limit-info",7),o()),n&2){let l,m;r(4),I(i.row.registry.instanceKey||"\u2014"),r(4),I((i.row.instanceData==null||i.row.instanceData.name==null?null:i.row.instanceData.name.trim())||"\u2014"),r(4),I((i.row.instanceData==null?null:i.row.instanceData.status)||"\u2014"),r(),u((l=i.presence)?13:-1,l),r(4),S(" ",(i.row.instanceData==null||i.row.instanceData.sessionStatuses==null||i.row.instanceData.sessionStatuses[0]==null?null:i.row.instanceData.sessionStatuses[0].presence)||"\u2014"," "),r(),u((m=i.row.instanceData==null||i.row.instanceData.sessionStatuses==null?null:i.row.instanceData.sessionStatuses[0])?18:-1,m),r(4),I(i.row.registry.primaryMacAddress||"\u2014"),r(4),I(i.row.registry.installLocationPath||"\u2014"),r(4),I(i.row.registry.hostName||"\u2014"),r(4),S(" ",B(35,12,i.row.registry.__created,"yyyy-MM-dd HH:mm:ss")||"\u2014"," "),r(5),S(" ",B(40,15,i.row.registry.__updated,"yyyy-MM-dd HH:mm:ss")||"\u2014"," "),r(3),p("ccapId",i.row.registry.instanceKey||"")}},dependencies:[N,J,be,Y],encapsulation:2})}return t})();var Ae=(t,d)=>d.instanceKey,Re=t=>({"bg-ccapAccent/10":t});function Fe(t,d){if(t&1&&x(0,"app-s-instance-presence-badge",5),t&2){let e=d;p("presence",e.presence)("lastHeartbeatAt",e.lastHeartbeatAt)("wsConnected",e.wsConnected)("showLabel",!1)}}function Ve(t,d){t&1&&(a(0,"span",6),s(1,"(local)"),o())}function ze(t,d){t&1&&x(0,"span",7)}function Le(t,d){if(t&1){let e=k();a(0,"div",2)(1,"button",4),f("click",function(){let i,l=C(e).$implicit,m=c();return v(m.handleSelectInstance((i=l.instanceKey)!==null&&i!==void 0?i:""))}),_(2,Fe,1,4,"app-s-instance-presence-badge",5),s(3),_(4,Ve,2,0,"span",6)(5,ze,1,0,"span",7),o(),a(6,"button",8),f("click",function(){let i,l=C(e).$implicit,m=c();return v(m.handleInfoClick((i=l.instanceKey)!==null&&i!==void 0?i:""))}),s(7," i "),o()()}if(t&2){let e,n=d.$implicit,i=c();r(),M("border-ccapAccent",i.isSelected(n))("text-ccapAccent",i.isSelected(n))("border-neonDefault",!i.isSelected(n))("text-neutral-400",!i.isSelected(n))("hover:text-neutral-200",!i.isSelected(n))("hover:border-neutral-500",!i.isSelected(n)),p("ngClass",ne(17,Re,i.isSelected(n))),r(),u((e=i.getPresenceForRow(n))?2:-1,e),r(),S(" ",i.getDisplayLabel(n)," "),r(),u(i.isLocal(n)?4:-1),r(),u(i.getActiveSessionForRow(n)?5:-1)}}function Pe(t,d){t&1&&(a(0,"span",3),s(1,"loading..."),o())}var Ee=(()=>{class t{peiContext_DS=y(ue);presenceMap=new Map;activeSessionMap=new Map;infoRequested=new Z;instances_$=h(()=>this.peiContext_DS.instanceList_$());selectedCcapId_$=h(()=>this.peiContext_DS.activeCcapId_$());localKey_$=h(()=>this.peiContext_DS.localInstanceKey_$());ngOnInit(){this.peiContext_DS.initialize()}handleSelectInstance(e){this.peiContext_DS.selectInstance(e)}handleInfoClick(e){this.infoRequested.emit({instanceKey:e})}getDisplayLabel(e){let n=e.hostName??"",i=(e.instanceKey??"").slice(-6);return n?`${n} (${i})`:i||"?"}isSelected(e){return(e.instanceKey??"")===this.selectedCcapId_$()}isLocal(e){return(e.instanceKey??"")===this.localKey_$()}getPresenceForRow(e){let n=e.instanceKey??"";return n?this.presenceMap.get(n)??null:null}getActiveSessionForRow(e){let n=e.instanceKey??"";return n?this.activeSessionMap.get(n)===!0:!1}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=b({type:t,selectors:[["app-s-instance-selector"]],hostAttrs:[1,"block"],inputs:{presenceMap:"presenceMap",activeSessionMap:"activeSessionMap"},outputs:{infoRequested:"infoRequested"},standalone:!0,features:[w],decls:6,vars:1,consts:[[1,"flex","gap-1","flex-wrap","items-center"],[1,"text-[10px]","text-neutral-500","mr-1","uppercase","tracking-wider"],[1,"flex","items-center","gap-0.5","group"],[1,"text-[10px]","text-neutral-600","italic"],[1,"px-2","py-0.5","text-[11px]","rounded-full","border","transition-colors","flex","items-center","gap-1",3,"click","ngClass"],[3,"presence","lastHeartbeatAt","wsConnected","showLabel"],[1,"ml-0.5","text-[9px]","text-neutral-500"],["title","Akt\xEDv session fut ezen az instance-en","aria-label","Akt\xEDv session fut ezen az instance-en","data-testid","s-instance-active-session-dot",1,"inline-block","w-1.5","h-1.5","rounded-full","bg-yellow-400","animate-pulse","shrink-0"],["type","button","title","Instance details","aria-label","Show instance details","data-testid","s-instance-selector-info-btn",1,"text-[11px]","leading-none","w-4","h-4","rounded-full","border","border-neutral-700","text-neutral-500","hover:text-ccapAccent","hover:border-ccapAccent","transition-colors","flex","items-center","justify-center",3,"click"]],template:function(n,i){n&1&&(a(0,"div",0)(1,"span",1),s(2,"Instance:"),o(),F(3,Le,8,19,"div",2,Ae),_(5,Pe,2,0,"span",3),o()),n&2&&(r(3),V(i.instances_$()),r(2),u(i.instances_$().length?-1:5))},dependencies:[N,K,Y],encapsulation:2})}return t})();function je(t,d){if(t&1&&x(0,"app-s-instance-detail-view",3),t&2){let e=c(2);p("row",d)("presence",e.getPresenceForSelectedRow())}}function Be(t,d){if(t&1){let e=k();a(0,"app-s-modal",2),f("closed",function(){C(e);let i=c();return v(i.handleModalClosed())}),_(1,je,1,2,"app-s-instance-detail-view",3),o()}if(t&2){let e,n=c();p("isOpen",!0)("title",n.modalTitle_$())("maxWidth","lg"),r(),u((e=n.selectedRow_$())?1:-1,e)}}var en=(()=>{class t{instanceRegistry_DS=y(pe);runtimeInstances_DS=y(fe);presenceMap=new Map;activeSessionMap=new Map;selectedInstanceKey_$=$(null);viewRows_$=h(()=>Se.buildViewRows(this.instanceRegistry_DS.list_$(),this.runtimeInstances_DS.ccapInstanceList_$()));selectedRow_$=h(()=>{let e=this.selectedInstanceKey_$();return e?this.viewRows_$().find(n=>(n.registry.instanceKey??"")===e)??null:null});isModalOpen_$=h(()=>this.selectedRow_$()!==null);modalTitle_$=h(()=>{let e=this.selectedRow_$();if(!e)return"";let n=e.registry.hostName??"",i=e.registry.instanceKey??"";return n?`Instance \u2014 ${n}`:`Instance \u2014 ${i.slice(-6)||"?"}`});handleInfoRequested(e){this.selectedInstanceKey_$.set(e.instanceKey)}getPresenceForSelectedRow(){let e=this.selectedRow_$();if(!e)return;let n=e.registry.instanceKey??"";if(n)return this.presenceMap.get(n)}handleModalClosed(){this.selectedInstanceKey_$.set(null)}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=b({type:t,selectors:[["app-s-instance-chip-row-with-info"]],hostAttrs:[1,"block"],inputs:{presenceMap:"presenceMap",activeSessionMap:"activeSessionMap"},standalone:!0,features:[w],decls:2,vars:3,consts:[[3,"infoRequested","presenceMap","activeSessionMap"],[3,"isOpen","title","maxWidth"],[3,"closed","isOpen","title","maxWidth"],[3,"row","presence"]],template:function(n,i){n&1&&(a(0,"app-s-instance-selector",0),f("infoRequested",function(m){return i.handleInfoRequested(m)}),o(),_(1,Be,2,4,"app-s-modal",1)),n&2&&(p("presenceMap",i.presenceMap)("activeSessionMap",i.activeSessionMap),r(),u(i.isModalOpen_$()?1:-1))},dependencies:[N,Ee,ce,we],encapsulation:2})}return t})();var G=(()=>{class t{currentlyOpenId_$=$(null);isOpen(e){return h(()=>this.currentlyOpenId_$()===e)}setOpen(e){this.currentlyOpenId_$.set(e)}toggle(e){this.currentlyOpenId_$()===e?this.currentlyOpenId_$.set(null):this.currentlyOpenId_$.set(e)}static \u0275fac=function(n){return new(n||t)};static \u0275prov=X({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();var P=function(t){return t.schedule="schedule",t.quickcast="quickcast",t.coordinator="coordinator",t.quickSettings="quick-settings",t}(P||{});var ke=(t,d)=>d._id,Ke=()=>["border-neonAmber/60","text-neonAmber","shadow-neon-glow-orange","hover:border-neonAmber","hover:bg-neonAmber/10"],Ne=()=>["border-neutral-700","text-neutral-600"];function Ge(t,d){if(t&1&&(a(0,"span",4),s(1),o()),t&2){let e=c();r(),S(" ",e.sessionJobs_$().length>9?"9+":e.sessionJobs_$().length," ")}}function He(t,d){t&1&&(E(),a(0,"svg",15),x(1,"path",22),o())}function Je(t,d){t&1&&(E(),a(0,"svg",15),x(1,"rect",23)(2,"rect",24),o())}function Qe(t,d){t&1&&(a(0,"span",18),s(1," \u23F8 paused "),o())}function qe(t,d){if(t&1&&(a(0,"span",20),s(1),z(2,"date"),o()),t&2){let e=c().$implicit;r(),S(" ",B(2,1,e.nextDueAt,"yyyy-MM-dd HH:mm")," ")}}function Ye(t,d){t&1&&(a(0,"span",21),s(1,"\u2014"),o())}function We(t,d){if(t&1&&(a(0,"span",27),s(1),o()),t&2){let e=d.$implicit,n=c(5);p("ngClass",n.getExecutionBadgeClass(e.status))("title",n.buildExecutionBadgeTooltip(e)),r(),S(" ",n.getExecutionBadgeLabel(e.status)," ")}}function Ue(t,d){if(t&1&&(a(0,"div",25)(1,"span",26),s(2,"Trigger-ek:"),o(),F(3,We,2,3,"span",27,ke),o()),t&2){let e=c();r(3),V(e)}}function Xe(t,d){t&1&&_(0,Ue,5,0,"div",25),t&2&&u(d.length>0?0:-1)}function Ze(t,d){if(t&1){let e=k();a(0,"div",9)(1,"div",6)(2,"div",10)(3,"span",11),s(4),o(),a(5,"span",12),s(6),z(7,"schSchedulePresetLabel"),o()(),a(8,"div",13)(9,"button",14),f("click",function(){let i=C(e).$implicit,l=c(2);return v(l.handleTogglePaused(i))}),_(10,He,2,0,":svg:svg",15)(11,Je,3,0,":svg:svg",15),o(),a(12,"button",16),f("click",function(){let i=C(e).$implicit,l=c(2);return v(l.handleTriggerNow(i))}),E(),a(13,"svg",15),x(14,"path",17),o()()()(),_(15,Qe,2,0,"span",18),Q(),a(16,"div",19)(17,"span"),s(18,"K\xF6vetkez\u0151:"),o(),_(19,qe,3,4,"span",20)(20,Ye,2,0,"span",21),o(),_(21,Xe,1,1),o()}if(t&2){let e,n,i,l,m,T,j,g=d.$implicit,D=c(2);r(3),p("title",(e=g.name)!==null&&e!==void 0?e:""),r(),S(" ",((n=g.name)!==null&&n!==void 0?n:"").trim()||"Unnamed schedule"," "),r(2),S(" ",ie(7,28,g.schedule)," "),r(3),M("border-neonCyan",g.paused)("text-neonCyan",g.paused)("hover:bg-neonCyan",g.paused)("hover:bg-opacity-10",g.paused)("border-neutral-500",!g.paused)("text-neutral-400",!g.paused)("hover:border-neutral-300",!g.paused)("hover:text-neutral-200",!g.paused),p("disabled",D.busyJobIds_$().has((i=g._id)!==null&&i!==void 0?i:""))("title",D.busyJobIds_$().has((l=g._id)!==null&&l!==void 0?l:"")?"Folyamatban\u2026":g.paused?"Folytat\xE1s (Resume)":"Sz\xFCneteltet\xE9s (Pause)"),R("aria-label",g.paused?"Resume schedule":"Pause schedule"),r(),u(g.paused?10:11),r(2),p("disabled",D.busyJobIds_$().has((m=g._id)!==null&&m!==void 0?m:""))("title",D.busyJobIds_$().has((T=g._id)!==null&&T!==void 0?T:"")?"Ind\xEDt\xE1s folyamatban\u2026":"Most futtatni (Trigger Now)"),r(3),u(g.paused?15:-1),r(4),u(g.nextDueAt?19:20),r(2),u((j=D.getRecentExecutions(g))?21:-1,j)}}function et(t,d){if(t&1){let e=k();a(0,"div",5)(1,"div",6)(2,"span",7),s(3),o(),a(4,"button",8),f("click",function(){C(e);let i=c();return v(i.handleToggle())}),s(5," \xD7 "),o()(),F(6,Ze,22,30,"div",9,ke),o()}if(t&2){let e=c();r(3),S(" Schedule (",e.sessionJobs_$().length,") "),r(3),V(e.sessionJobs_$())}}var _n=(()=>{class t{sessionId=A.required();scheduledJobs_DS=y(ge);overlayCoordinator_CS=y(G);OVERLAY_ID=P.schedule;isOpen_$=this.overlayCoordinator_CS.isOpen(this.OVERLAY_ID);busyJobIds_$=$(new Set);sessionJobs_$=h(()=>{let e=(this.sessionId()??"").trim();return e?this.scheduledJobs_DS.jobs_$().filter(i=>i.enabled===!1?!1:(i.target?.payload?.sessionId??"").trim()===e):[]});hasSchedule_$=h(()=>this.sessionJobs_$().length>0);ngOnInit(){this.scheduledJobs_DS.jobs_$().length===0&&this.scheduledJobs_DS.loadAll()}handleToggle(){this.overlayCoordinator_CS.toggle(this.OVERLAY_ID)}handleTriggerNow(e){return H(this,null,function*(){let n=(e._id??"").trim();if(n&&!this.busyJobIds_$().has(n)){this.busyJobIds_$.update(i=>{let l=new Set(i);return l.add(n),l});try{yield this.scheduledJobs_DS.triggerNow({jobId:n,reason:"session-overlay-manual"})}finally{this.busyJobIds_$.update(i=>{let l=new Set(i);return l.delete(n),l})}}})}handleTogglePaused(e){return H(this,null,function*(){let n=(e._id??"").trim();if(!n||this.busyJobIds_$().has(n))return;let i=!e.paused;this.busyJobIds_$.update(l=>{let m=new Set(l);return m.add(n),m});try{yield this.scheduledJobs_DS.togglePaused(n,i)}finally{this.busyJobIds_$.update(l=>{let m=new Set(l);return m.delete(n),m})}})}getRecentExecutions(e){let n=e._id??"";return n?this.scheduledJobs_DS.recentExecutions_$().get(n)??[]:[]}getExecutionBadgeClass(e){switch(e){case"triggered":return"bg-emerald-500/20 text-emerald-400";case"completed":return"bg-sky-500/20 text-sky-400";case"skipped":return"bg-neutral-600/30 text-neutral-400";case"failed":return"bg-red-500/20 text-red-400";case"cancelled":return"bg-amber-500/20 text-amber-400";case"dry-run":return"bg-purple-500/20 text-purple-400";default:return"bg-neutral-700/40 text-neutral-500"}}getExecutionBadgeLabel(e){switch(e){case"triggered":return"OK";case"completed":return"Done";case"skipped":return"Skip";case"failed":return"Fail";case"cancelled":return"Cancel";case"dry-run":return"Dry";default:return"?"}}buildExecutionBadgeTooltip(e){let n=[];return e.scheduledAt&&(n.push(new Date(e.scheduledAt).toISOString().slice(0,16).replace("T"," ")),n.push(" \u2014 ")),n.push(e.status??"?"),e.skipReason&&n.push(` (${e.skipReason})`),e.status==="failed"&&e.errorDetails?.message&&n.push(`: ${e.errorDetails.message}`),n.join("")}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=b({type:t,selectors:[["app-s-session-schedule-overlay"]],hostAttrs:[1,"absolute","bottom-4","left-0","z-30","pointer-events-none"],inputs:{sessionId:[1,"sessionId"]},standalone:!0,features:[w],decls:6,vars:12,consts:[[1,"flex","items-end","gap-2","pointer-events-auto"],["type","button","aria-label","Schedule",1,"relative","flex","items-center","justify-center","h-8","w-7","bg-neutral-900","border-2","border-l-0","rounded-r-lg","transition-all","duration-200","ease-out","disabled:cursor-not-allowed",3,"click","disabled","title","ngClass"],["fill","none","stroke","currentColor","viewBox","0 0 24 24","aria-hidden","true",1,"w-4","h-4"],["stroke-linecap","round","stroke-linejoin","round","stroke-width","2","d",`M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5
|
|
1
|
+
import{a as he}from"./chunk-OKTAADTQ.js";import{a as ge,b as Ce}from"./chunk-MO37SUK2.js";import{a as me,b as _e}from"./chunk-VMXIXZV2.js";import{a as Se,b as Y}from"./chunk-L44637OO.js";import{a as ue}from"./chunk-SDVXPGB7.js";import{b as pe}from"./chunk-B25EGDHU.js";import{d as fe}from"./chunk-GTERKRTR.js";import{d as U,h as xe}from"./chunk-EVMDNGBK.js";import{a as ce}from"./chunk-FLAJXIYW.js";import{f as oe,i as ae,n as re,o as se,p as le,v as de}from"./chunk-EO4DNTT4.js";import{p as Te}from"./chunk-Y6V4NGLU.js";import{$a as z,C as y,D as b,Fa as s,Ga as I,Ha as S,Ia as te,J as C,K as v,L as E,M as Q,Q as Z,T as q,Ta as w,U as A,Ua as O,Va as ne,Z as r,aa as $,ab as ie,bb as B,da as _,fa as R,ga as p,h as $e,hb as h,ia as M,k as H,la as u,mb as K,na as ee,oa as F,pa as V,pb as J,qa as a,ra as o,sa as x,ua as k,ub as N,va as f,wa as c,y as X}from"./chunk-TBMJSIBB.js";var ye=$e(Te());var W=(()=>{class t{static SESSION_LIMIT_TYPE="five_hour";static WEEKLY_LIMIT_TYPE="seven_day";static formatResetText(e){if(!e?.resetsAt)return"";let n=new Date(e.resetsAt*1e3),i=new Date,l=n.getTime()-i.getTime();if(l<=0)return"expired";let m=Math.floor(l/6e4),T=Math.floor(m/60),j=m%60;return T>0?`${T}h ${j}m`:`${j}m`}static formatResetTextPrecise(e){if(!e?.resetsAt)return"";let n=new Date(e.resetsAt*1e3),i=new Date,l=Math.floor((n.getTime()-i.getTime())/1e3);if(l<=0)return"expired";let m=Math.floor(l/86400),T=Math.floor(l%86400/3600),j=Math.floor(l%3600/60),g=l%60,D=[];return m&&D.push(`${m}d`),(m||T)&&D.push(`${T}h`),(m||T||j)&&D.push(`${j}m`),D.push(`${g}s`),D.join(" ")}static computeUtilizationPercent(e){if(!e)return 0;let n=typeof e.utilization=="number"?e.utilization:0,i=Math.max(0,Math.min(1,n));return Math.round(i*100)}static computeThresholdPercent(e){if(!e)return 0;let n=typeof e.surpassedThreshold=="number"?e.surpassedThreshold:0,i=Math.max(0,Math.min(1,n));return Math.round(i*100)}static isOverThreshold(e){if(!e)return!1;let n=typeof e.utilization=="number"?e.utilization:0,i=typeof e.surpassedThreshold=="number"?e.surpassedThreshold:1;return n>=i&&i>0}static formatLimitScopeLabel(e){return e?.rateLimitType?e.rateLimitType===t.SESSION_LIMIT_TYPE?"Session":e.rateLimitType===t.WEEKLY_LIMIT_TYPE?"Weekly":e.rateLimitType:""}}return t})();function Me(t,d){if(t&1&&(a(0,"div",0)(1,"span",1),s(2," Rate limit "),o(),a(3,"span",2),s(4,"Scope"),o(),a(5,"span",3),s(6),o(),a(7,"span",2),s(8,"St\xE1tusz"),o(),a(9,"span",3),s(10),o(),a(11,"span",2),s(12,"Utilization"),o(),a(13,"span",4),s(14),o(),a(15,"span",2),s(16,"Reset"),o(),a(17,"span",4),s(18),o(),a(19,"span",2),s(20,"Utols\xF3 \xE9szlel\xE9s"),o(),a(21,"span",5),s(22),z(23,"date"),o()()),t&2){let e=d,n=c();r(6),I(n.limitScopeLabel_$()||"\u2014"),r(3),M("text-neonRed",e.status==="limited")("text-yellow-400",e.status==="allowed_warning")("text-neutral-300",e.status==="allowed"),r(),S(" ",e.status||"\u2014"," "),r(4),S("",n.utilizationPercent_$(),"%"),r(4),I(n.resetText_$()||"\u2014"),r(4),S(" ",B(23,11,e.receivedAt,"yyyy-MM-dd HH:mm:ss")||"\u2014"," ")}}var be=(()=>{class t{claudeCode_AS=y(me);_ccapId="";set ccapId(e){this._ccapId=e?.trim()??"",this.refreshRateLimitState()}get ccapId(){return this._ccapId}rateLimitInfo_$=$(null);utilizationPercent_$=h(()=>W.computeUtilizationPercent(this.rateLimitInfo_$()));resetText_$=h(()=>W.formatResetText(this.rateLimitInfo_$()));limitScopeLabel_$=h(()=>W.formatLimitScopeLabel(this.rateLimitInfo_$()));refreshRateLimitState(){if(!this._ccapId){this.rateLimitInfo_$.set(null);return}this.claudeCode_AS.getRateLimitState({ccapId:this._ccapId}).then(e=>{let n=_e.mapServerItemsToClientInfo(e.items);this.rateLimitInfo_$.set(n)}).catch(e=>{ye.DyFM_Log.warn(`s-cc-rate-limit-info | rate-limit fetch failed | ccapId: ${this._ccapId} | err: ${String(e)}`),this.rateLimitInfo_$.set(null)})}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=b({type:t,selectors:[["app-s-cc-rate-limit-info"]],inputs:{ccapId:"ccapId"},standalone:!0,features:[w],decls:1,vars:1,consts:[[1,"grid","grid-cols-[minmax(8rem,auto)_1fr]","gap-x-3","gap-y-2","text-xs","text-neutral-200"],[1,"col-span-2","text-[11px]","uppercase","tracking-wider","text-neutral-500"],[1,"text-neutral-500","shrink-0"],[1,"whitespace-nowrap"],[1,"whitespace-nowrap","font-mono"],[1,"font-mono","text-[11px]","whitespace-nowrap"]],template:function(n,i){if(n&1&&_(0,Me,24,14,"div",0),n&2){let l;u((l=i.rateLimitInfo_$())?0:-1,l)}},dependencies:[N,J],encapsulation:2})}return t})();function Oe(t,d){if(t&1&&(a(0,"span",1),s(1,"Instance presence"),o(),a(2,"span",4),x(3,"app-s-instance-presence-badge",8),o()),t&2){let e=d;r(3),p("presence",e.presence)("lastHeartbeatAt",e.lastHeartbeatAt)("wsConnected",e.wsConnected)}}function De(t,d){if(t&1&&(a(0,"span",9),s(1,"Run / tev\xE9kenys\xE9g"),o(),a(2,"span",10)(3,"span",11),s(4),o(),a(5,"span",12),s(6),o()(),a(7,"span",1),s(8,"Utols\xF3 aktivit\xE1s"),o(),a(9,"span",13),s(10),z(11,"date"),o(),a(12,"span",1),s(13,"Utols\xF3 \xFCzenet"),o(),a(14,"span",14),s(15),o()),t&2){let e=d;r(4),I(e.activeRunPhase||"\u2014"),r(2),I(e.activitySummary||"\u2014"),r(4),S(" ",B(11,4,e.lastActivityAt,"yyyy-MM-dd HH:mm:ss")||"\u2014"," "),r(5),I(e.lastMessage||"\u2014")}}var we=(()=>{class t{row;presence=void 0;static \u0275fac=function(n){return new(n||t)};static \u0275cmp=b({type:t,selectors:[["app-s-instance-detail-view"]],inputs:{row:"row",presence:"presence"},standalone:!0,features:[w],decls:43,vars:18,consts:[[1,"grid","grid-cols-[minmax(8rem,auto)_1fr]","gap-x-3","gap-y-2","text-xs","text-neutral-200"],[1,"text-neutral-500","shrink-0"],[1,"font-mono","break-all"],[1,"break-all"],[1,"whitespace-nowrap"],[1,"font-mono","whitespace-nowrap"],[1,"mt-2","pt-2","border-t","border-neutral-800"],[3,"ccapId"],[3,"presence","lastHeartbeatAt","wsConnected"],[1,"text-neutral-500","shrink-0","self-start","pt-0.5"],[1,"break-words"],[1,"font-mono","text-[11px]","text-neutral-400","block"],[1,"text-neutral-300"],[1,"font-mono","text-[11px]","whitespace-nowrap"],[1,"break-words","text-neutral-300"]],template:function(n,i){if(n&1&&(a(0,"div",0)(1,"span",1),s(2,"instanceKey"),o(),a(3,"span",2),s(4),o(),a(5,"span",1),s(6,"N\xE9v"),o(),a(7,"span",3),s(8),o(),a(9,"span",1),s(10,"St\xE1tusz"),o(),a(11,"span",4),s(12),o(),_(13,Oe,4,3),a(14,"span",1),s(15,"Session presence"),o(),a(16,"span",4),s(17),o(),_(18,De,16,7),a(19,"span",1),s(20,"MAC"),o(),a(21,"span",2),s(22),o(),a(23,"span",1),s(24,"Install path"),o(),a(25,"span",2),s(26),o(),a(27,"span",1),s(28,"hostName"),o(),a(29,"span",3),s(30),o(),a(31,"span",1),s(32,"registry __created"),o(),a(33,"span",5),s(34),z(35,"date"),o(),a(36,"span",1),s(37,"registry __updated"),o(),a(38,"span",5),s(39),z(40,"date"),o()(),a(41,"div",6),x(42,"app-s-cc-rate-limit-info",7),o()),n&2){let l,m;r(4),I(i.row.registry.instanceKey||"\u2014"),r(4),I((i.row.instanceData==null||i.row.instanceData.name==null?null:i.row.instanceData.name.trim())||"\u2014"),r(4),I((i.row.instanceData==null?null:i.row.instanceData.status)||"\u2014"),r(),u((l=i.presence)?13:-1,l),r(4),S(" ",(i.row.instanceData==null||i.row.instanceData.sessionStatuses==null||i.row.instanceData.sessionStatuses[0]==null?null:i.row.instanceData.sessionStatuses[0].presence)||"\u2014"," "),r(),u((m=i.row.instanceData==null||i.row.instanceData.sessionStatuses==null?null:i.row.instanceData.sessionStatuses[0])?18:-1,m),r(4),I(i.row.registry.primaryMacAddress||"\u2014"),r(4),I(i.row.registry.installLocationPath||"\u2014"),r(4),I(i.row.registry.hostName||"\u2014"),r(4),S(" ",B(35,12,i.row.registry.__created,"yyyy-MM-dd HH:mm:ss")||"\u2014"," "),r(5),S(" ",B(40,15,i.row.registry.__updated,"yyyy-MM-dd HH:mm:ss")||"\u2014"," "),r(3),p("ccapId",i.row.registry.instanceKey||"")}},dependencies:[N,J,be,Y],encapsulation:2})}return t})();var Ae=(t,d)=>d.instanceKey,Re=t=>({"bg-ccapAccent/10":t});function Fe(t,d){if(t&1&&x(0,"app-s-instance-presence-badge",5),t&2){let e=d;p("presence",e.presence)("lastHeartbeatAt",e.lastHeartbeatAt)("wsConnected",e.wsConnected)("showLabel",!1)}}function Ve(t,d){t&1&&(a(0,"span",6),s(1,"(local)"),o())}function ze(t,d){t&1&&x(0,"span",7)}function Le(t,d){if(t&1){let e=k();a(0,"div",2)(1,"button",4),f("click",function(){let i,l=C(e).$implicit,m=c();return v(m.handleSelectInstance((i=l.instanceKey)!==null&&i!==void 0?i:""))}),_(2,Fe,1,4,"app-s-instance-presence-badge",5),s(3),_(4,Ve,2,0,"span",6)(5,ze,1,0,"span",7),o(),a(6,"button",8),f("click",function(){let i,l=C(e).$implicit,m=c();return v(m.handleInfoClick((i=l.instanceKey)!==null&&i!==void 0?i:""))}),s(7," i "),o()()}if(t&2){let e,n=d.$implicit,i=c();r(),M("border-ccapAccent",i.isSelected(n))("text-ccapAccent",i.isSelected(n))("border-neonDefault",!i.isSelected(n))("text-neutral-400",!i.isSelected(n))("hover:text-neutral-200",!i.isSelected(n))("hover:border-neutral-500",!i.isSelected(n)),p("ngClass",ne(17,Re,i.isSelected(n))),r(),u((e=i.getPresenceForRow(n))?2:-1,e),r(),S(" ",i.getDisplayLabel(n)," "),r(),u(i.isLocal(n)?4:-1),r(),u(i.getActiveSessionForRow(n)?5:-1)}}function Pe(t,d){t&1&&(a(0,"span",3),s(1,"loading..."),o())}var Ee=(()=>{class t{peiContext_DS=y(ue);presenceMap=new Map;activeSessionMap=new Map;infoRequested=new Z;instances_$=h(()=>this.peiContext_DS.instanceList_$());selectedCcapId_$=h(()=>this.peiContext_DS.activeCcapId_$());localKey_$=h(()=>this.peiContext_DS.localInstanceKey_$());ngOnInit(){this.peiContext_DS.initialize()}handleSelectInstance(e){this.peiContext_DS.selectInstance(e)}handleInfoClick(e){this.infoRequested.emit({instanceKey:e})}getDisplayLabel(e){let n=e.hostName??"",i=(e.instanceKey??"").slice(-6);return n?`${n} (${i})`:i||"?"}isSelected(e){return(e.instanceKey??"")===this.selectedCcapId_$()}isLocal(e){return(e.instanceKey??"")===this.localKey_$()}getPresenceForRow(e){let n=e.instanceKey??"";return n?this.presenceMap.get(n)??null:null}getActiveSessionForRow(e){let n=e.instanceKey??"";return n?this.activeSessionMap.get(n)===!0:!1}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=b({type:t,selectors:[["app-s-instance-selector"]],hostAttrs:[1,"block"],inputs:{presenceMap:"presenceMap",activeSessionMap:"activeSessionMap"},outputs:{infoRequested:"infoRequested"},standalone:!0,features:[w],decls:6,vars:1,consts:[[1,"flex","gap-1","flex-wrap","items-center"],[1,"text-[10px]","text-neutral-500","mr-1","uppercase","tracking-wider"],[1,"flex","items-center","gap-0.5","group"],[1,"text-[10px]","text-neutral-600","italic"],[1,"px-2","py-0.5","text-[11px]","rounded-full","border","transition-colors","flex","items-center","gap-1",3,"click","ngClass"],[3,"presence","lastHeartbeatAt","wsConnected","showLabel"],[1,"ml-0.5","text-[9px]","text-neutral-500"],["title","Akt\xEDv session fut ezen az instance-en","aria-label","Akt\xEDv session fut ezen az instance-en","data-testid","s-instance-active-session-dot",1,"inline-block","w-1.5","h-1.5","rounded-full","bg-yellow-400","animate-pulse","shrink-0"],["type","button","title","Instance details","aria-label","Show instance details","data-testid","s-instance-selector-info-btn",1,"text-[11px]","leading-none","w-4","h-4","rounded-full","border","border-neutral-700","text-neutral-500","hover:text-ccapAccent","hover:border-ccapAccent","transition-colors","flex","items-center","justify-center",3,"click"]],template:function(n,i){n&1&&(a(0,"div",0)(1,"span",1),s(2,"Instance:"),o(),F(3,Le,8,19,"div",2,Ae),_(5,Pe,2,0,"span",3),o()),n&2&&(r(3),V(i.instances_$()),r(2),u(i.instances_$().length?-1:5))},dependencies:[N,K,Y],encapsulation:2})}return t})();function je(t,d){if(t&1&&x(0,"app-s-instance-detail-view",3),t&2){let e=c(2);p("row",d)("presence",e.getPresenceForSelectedRow())}}function Be(t,d){if(t&1){let e=k();a(0,"app-s-modal",2),f("closed",function(){C(e);let i=c();return v(i.handleModalClosed())}),_(1,je,1,2,"app-s-instance-detail-view",3),o()}if(t&2){let e,n=c();p("isOpen",!0)("title",n.modalTitle_$())("maxWidth","lg"),r(),u((e=n.selectedRow_$())?1:-1,e)}}var en=(()=>{class t{instanceRegistry_DS=y(pe);runtimeInstances_DS=y(fe);presenceMap=new Map;activeSessionMap=new Map;selectedInstanceKey_$=$(null);viewRows_$=h(()=>Se.buildViewRows(this.instanceRegistry_DS.list_$(),this.runtimeInstances_DS.ccapInstanceList_$()));selectedRow_$=h(()=>{let e=this.selectedInstanceKey_$();return e?this.viewRows_$().find(n=>(n.registry.instanceKey??"")===e)??null:null});isModalOpen_$=h(()=>this.selectedRow_$()!==null);modalTitle_$=h(()=>{let e=this.selectedRow_$();if(!e)return"";let n=e.registry.hostName??"",i=e.registry.instanceKey??"";return n?`Instance \u2014 ${n}`:`Instance \u2014 ${i.slice(-6)||"?"}`});handleInfoRequested(e){this.selectedInstanceKey_$.set(e.instanceKey)}getPresenceForSelectedRow(){let e=this.selectedRow_$();if(!e)return;let n=e.registry.instanceKey??"";if(n)return this.presenceMap.get(n)}handleModalClosed(){this.selectedInstanceKey_$.set(null)}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=b({type:t,selectors:[["app-s-instance-chip-row-with-info"]],hostAttrs:[1,"block"],inputs:{presenceMap:"presenceMap",activeSessionMap:"activeSessionMap"},standalone:!0,features:[w],decls:2,vars:3,consts:[[3,"infoRequested","presenceMap","activeSessionMap"],[3,"isOpen","title","maxWidth"],[3,"closed","isOpen","title","maxWidth"],[3,"row","presence"]],template:function(n,i){n&1&&(a(0,"app-s-instance-selector",0),f("infoRequested",function(m){return i.handleInfoRequested(m)}),o(),_(1,Be,2,4,"app-s-modal",1)),n&2&&(p("presenceMap",i.presenceMap)("activeSessionMap",i.activeSessionMap),r(),u(i.isModalOpen_$()?1:-1))},dependencies:[N,Ee,ce,we],encapsulation:2})}return t})();var G=(()=>{class t{currentlyOpenId_$=$(null);isOpen(e){return h(()=>this.currentlyOpenId_$()===e)}setOpen(e){this.currentlyOpenId_$.set(e)}toggle(e){this.currentlyOpenId_$()===e?this.currentlyOpenId_$.set(null):this.currentlyOpenId_$.set(e)}static \u0275fac=function(n){return new(n||t)};static \u0275prov=X({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();var P=function(t){return t.schedule="schedule",t.quickcast="quickcast",t.coordinator="coordinator",t.quickSettings="quick-settings",t}(P||{});var ke=(t,d)=>d._id,Ke=()=>["border-neonAmber/60","text-neonAmber","shadow-neon-glow-orange","hover:border-neonAmber","hover:bg-neonAmber/10"],Ne=()=>["border-neutral-700","text-neutral-600"];function Ge(t,d){if(t&1&&(a(0,"span",4),s(1),o()),t&2){let e=c();r(),S(" ",e.sessionJobs_$().length>9?"9+":e.sessionJobs_$().length," ")}}function He(t,d){t&1&&(E(),a(0,"svg",15),x(1,"path",22),o())}function Je(t,d){t&1&&(E(),a(0,"svg",15),x(1,"rect",23)(2,"rect",24),o())}function Qe(t,d){t&1&&(a(0,"span",18),s(1," \u23F8 paused "),o())}function qe(t,d){if(t&1&&(a(0,"span",20),s(1),z(2,"date"),o()),t&2){let e=c().$implicit;r(),S(" ",B(2,1,e.nextDueAt,"yyyy-MM-dd HH:mm")," ")}}function Ye(t,d){t&1&&(a(0,"span",21),s(1,"\u2014"),o())}function We(t,d){if(t&1&&(a(0,"span",27),s(1),o()),t&2){let e=d.$implicit,n=c(5);p("ngClass",n.getExecutionBadgeClass(e.status))("title",n.buildExecutionBadgeTooltip(e)),r(),S(" ",n.getExecutionBadgeLabel(e.status)," ")}}function Ue(t,d){if(t&1&&(a(0,"div",25)(1,"span",26),s(2,"Trigger-ek:"),o(),F(3,We,2,3,"span",27,ke),o()),t&2){let e=c();r(3),V(e)}}function Xe(t,d){t&1&&_(0,Ue,5,0,"div",25),t&2&&u(d.length>0?0:-1)}function Ze(t,d){if(t&1){let e=k();a(0,"div",9)(1,"div",6)(2,"div",10)(3,"span",11),s(4),o(),a(5,"span",12),s(6),z(7,"schSchedulePresetLabel"),o()(),a(8,"div",13)(9,"button",14),f("click",function(){let i=C(e).$implicit,l=c(2);return v(l.handleTogglePaused(i))}),_(10,He,2,0,":svg:svg",15)(11,Je,3,0,":svg:svg",15),o(),a(12,"button",16),f("click",function(){let i=C(e).$implicit,l=c(2);return v(l.handleTriggerNow(i))}),E(),a(13,"svg",15),x(14,"path",17),o()()()(),_(15,Qe,2,0,"span",18),Q(),a(16,"div",19)(17,"span"),s(18,"K\xF6vetkez\u0151:"),o(),_(19,qe,3,4,"span",20)(20,Ye,2,0,"span",21),o(),_(21,Xe,1,1),o()}if(t&2){let e,n,i,l,m,T,j,g=d.$implicit,D=c(2);r(3),p("title",(e=g.name)!==null&&e!==void 0?e:""),r(),S(" ",((n=g.name)!==null&&n!==void 0?n:"").trim()||"Unnamed schedule"," "),r(2),S(" ",ie(7,28,g.schedule)," "),r(3),M("border-neonCyan",g.paused)("text-neonCyan",g.paused)("hover:bg-neonCyan",g.paused)("hover:bg-opacity-10",g.paused)("border-neutral-500",!g.paused)("text-neutral-400",!g.paused)("hover:border-neutral-300",!g.paused)("hover:text-neutral-200",!g.paused),p("disabled",D.busyJobIds_$().has((i=g._id)!==null&&i!==void 0?i:""))("title",D.busyJobIds_$().has((l=g._id)!==null&&l!==void 0?l:"")?"Folyamatban\u2026":g.paused?"Folytat\xE1s (Resume)":"Sz\xFCneteltet\xE9s (Pause)"),R("aria-label",g.paused?"Resume schedule":"Pause schedule"),r(),u(g.paused?10:11),r(2),p("disabled",D.busyJobIds_$().has((m=g._id)!==null&&m!==void 0?m:""))("title",D.busyJobIds_$().has((T=g._id)!==null&&T!==void 0?T:"")?"Ind\xEDt\xE1s folyamatban\u2026":"Most futtatni (Trigger Now)"),r(3),u(g.paused?15:-1),r(4),u(g.nextDueAt?19:20),r(2),u((j=D.getRecentExecutions(g))?21:-1,j)}}function et(t,d){if(t&1){let e=k();a(0,"div",5)(1,"div",6)(2,"span",7),s(3),o(),a(4,"button",8),f("click",function(){C(e);let i=c();return v(i.handleToggle())}),s(5," \xD7 "),o()(),F(6,Ze,22,30,"div",9,ke),o()}if(t&2){let e=c();r(3),S(" Schedule (",e.sessionJobs_$().length,") "),r(3),V(e.sessionJobs_$())}}var _n=(()=>{class t{sessionId=A.required();scheduledJobs_DS=y(ge);overlayCoordinator_CS=y(G);OVERLAY_ID=P.schedule;isOpen_$=this.overlayCoordinator_CS.isOpen(this.OVERLAY_ID);busyJobIds_$=$(new Set);sessionJobs_$=h(()=>{let e=(this.sessionId()??"").trim();return e?this.scheduledJobs_DS.jobs_$().filter(i=>i.enabled===!1?!1:(i.target?.payload?.sessionId??"").trim()===e):[]});hasSchedule_$=h(()=>this.sessionJobs_$().length>0);ngOnInit(){this.scheduledJobs_DS.jobs_$().length===0&&this.scheduledJobs_DS.loadAll()}handleToggle(){this.overlayCoordinator_CS.toggle(this.OVERLAY_ID)}handleTriggerNow(e){return H(this,null,function*(){let n=(e._id??"").trim();if(n&&!this.busyJobIds_$().has(n)){this.busyJobIds_$.update(i=>{let l=new Set(i);return l.add(n),l});try{yield this.scheduledJobs_DS.triggerNow({jobId:n,reason:"session-overlay-manual"})}finally{this.busyJobIds_$.update(i=>{let l=new Set(i);return l.delete(n),l})}}})}handleTogglePaused(e){return H(this,null,function*(){let n=(e._id??"").trim();if(!n||this.busyJobIds_$().has(n))return;let i=!e.paused;this.busyJobIds_$.update(l=>{let m=new Set(l);return m.add(n),m});try{yield this.scheduledJobs_DS.togglePaused(n,i)}finally{this.busyJobIds_$.update(l=>{let m=new Set(l);return m.delete(n),m})}})}getRecentExecutions(e){let n=e._id??"";return n?this.scheduledJobs_DS.recentExecutions_$().get(n)??[]:[]}getExecutionBadgeClass(e){switch(e){case"triggered":return"bg-emerald-500/20 text-emerald-400";case"completed":return"bg-sky-500/20 text-sky-400";case"skipped":return"bg-neutral-600/30 text-neutral-400";case"failed":return"bg-red-500/20 text-red-400";case"cancelled":return"bg-amber-500/20 text-amber-400";case"dry-run":return"bg-purple-500/20 text-purple-400";default:return"bg-neutral-700/40 text-neutral-500"}}getExecutionBadgeLabel(e){switch(e){case"triggered":return"OK";case"completed":return"Done";case"skipped":return"Skip";case"failed":return"Fail";case"cancelled":return"Cancel";case"dry-run":return"Dry";default:return"?"}}buildExecutionBadgeTooltip(e){let n=[];return e.scheduledAt&&(n.push(new Date(e.scheduledAt).toISOString().slice(0,16).replace("T"," ")),n.push(" \u2014 ")),n.push(e.status??"?"),e.skipReason&&n.push(` (${e.skipReason})`),e.status==="failed"&&e.errorDetails?.message&&n.push(`: ${e.errorDetails.message}`),n.join("")}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=b({type:t,selectors:[["app-s-session-schedule-overlay"]],hostAttrs:[1,"absolute","bottom-4","left-0","z-30","pointer-events-none"],inputs:{sessionId:[1,"sessionId"]},standalone:!0,features:[w],decls:6,vars:12,consts:[[1,"flex","items-end","gap-2","pointer-events-auto"],["type","button","aria-label","Schedule",1,"relative","flex","items-center","justify-center","h-8","w-7","bg-neutral-900","border-2","border-l-0","rounded-r-lg","transition-all","duration-200","ease-out","disabled:cursor-not-allowed",3,"click","disabled","title","ngClass"],["fill","none","stroke","currentColor","viewBox","0 0 24 24","aria-hidden","true",1,"w-4","h-4"],["stroke-linecap","round","stroke-linejoin","round","stroke-width","2","d",`M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5
|
|
2
2
|
a2 2 0 00-2 2v12a2 2 0 002 2z`],["aria-hidden","true",1,"absolute","-top-1","-right-1","min-w-[14px]","h-[14px]","px-[2px]","bg-neonCyan","text-neutral-900","rounded-full","text-[9px]","font-mono","font-bold","leading-[14px]","text-center","shadow-neon-glow-cyan"],[1,"bg-neutral-900","border-2","border-neonAmber/60","rounded-lg","p-3","flex","flex-col","gap-2","min-w-[16rem]","max-w-xs","shadow-neon-glow-orange"],[1,"flex","items-center","justify-between","gap-2"],[1,"text-[10px]","uppercase","tracking-wider","text-neonAmber","font-mono"],["type","button","title","Bez\xE1r\xE1s","aria-label","Schedule panel bez\xE1r\xE1sa",1,"text-neutral-400","hover:text-neonAmber","leading-none","px-1","transition-colors",3,"click"],[1,"flex","flex-col","gap-1","border-t","border-neutral-800","pt-2","first:border-t-0","first:pt-0"],[1,"flex","flex-col","min-w-0"],[1,"text-sm","text-neutral-100","truncate",3,"title"],[1,"text-[10px]","text-neutral-500","font-mono"],[1,"flex","items-center","gap-1.5","shrink-0"],["type","button",1,"flex","items-center","justify-center","w-7","h-7","rounded-full","bg-neutral-900","border-2","transition-all","disabled:opacity-40","disabled:cursor-not-allowed",3,"click","disabled","title"],["fill","currentColor","viewBox","0 0 24 24","aria-hidden","true",1,"w-3.5","h-3.5"],["type","button","aria-label","Trigger now",1,"flex","items-center","justify-center","w-7","h-7","rounded-full","bg-neutral-900","border-2","border-neonAmber/60","text-neonAmber","hover:border-neonAmber","hover:bg-neonAmber/10","hover:shadow-neon-glow-orange","disabled:opacity-40","disabled:cursor-not-allowed","transition-all",3,"click","disabled","title"],["d","M8 5v14l11-7z"],[1,"inline-flex","items-center","gap-1","self-start","text-[9px]","uppercase","tracking-wider","px-1.5","py-0.5","rounded","border","border-neonCyan/50","bg-neonCyan/10","text-neonCyan","font-mono"],["title","K\xF6vetkez\u0151 \xFCtemezett fut\xE1s id\u0151pontja",1,"text-[10px]","text-neutral-500","flex","items-center","gap-1"],[1,"text-emerald-400","font-medium"],[1,"text-neutral-300"],["d","M5 5v14h2V5H5zm5 0v14l11-7z"],["x","6","y","5","width","4","height","14"],["x","14","y","5","width","4","height","14"],[1,"flex","items-center","gap-1","flex-wrap"],[1,"text-[10px]","text-neutral-500"],[1,"inline-flex","items-center","px-1.5","py-0.5","text-[10px]","rounded",3,"ngClass","title"]],template:function(n,i){n&1&&(a(0,"div",0)(1,"button",1),f("click",function(){return i.handleToggle()}),E(),a(2,"svg",2),x(3,"path",3),o(),_(4,Ge,2,1,"span",4),o(),_(5,et,8,1,"div",5),o()),n&2&&(r(),M("-translate-x-2",!i.isOpen_$())("translate-x-2",i.isOpen_$()),p("disabled",!i.hasSchedule_$())("title",i.hasSchedule_$()?i.isOpen_$()?"Schedule panel bez\xE1r\xE1sa":"Schedule megjelen\xEDt\xE9se ("+i.sessionJobs_$().length+" job)":"Nincs schedule ehhez a sessionh\xF6z")("ngClass",i.hasSchedule_$()?O(10,Ke):O(11,Ne)),R("aria-expanded",i.isOpen_$()),r(3),u(i.hasSchedule_$()&&i.sessionJobs_$().length>1?4:-1),r(),u(i.isOpen_$()?5:-1))},dependencies:[K,J,Ce],encapsulation:2})}return t})();function tt(t,d){if(t&1){let e=k();a(0,"button",10),f("click",function(){let i=C(e).$implicit,l=c(2);return v(l.handleAction(i))}),s(1),o()}if(t&2){let e=d.$implicit,n=c(2);p("disabled",n.pendingAction_$()===e),r(),S(" ",n.pendingAction_$()===e?"Sending\u2026":e," ")}}function nt(t,d){if(t&1){let e=k();a(0,"div",4)(1,"div",5)(2,"span",6),s(3," QuickCast "),o(),a(4,"button",7),f("click",function(){C(e);let i=c();return v(i.handleToggle())}),s(5," \xD7 "),o()(),a(6,"div",8),F(7,tt,2,2,"button",9,ee),o()()}if(t&2){let e=c();r(7),V(e.actions())}}var vn=(()=>{class t{actions=A(["Go","Continue","OK","Proceed","implement","Review Very Very Carefully","Ensure Documentations","tervezd meg nagyon alaposan \xE9s fejleszd le","Hogy \xE1llunk most?","itt vagy?"]);actionSelected=q();overlayCoordinator_CS=y(G);OVERLAY_ID=P.quickcast;isOpen_$=this.overlayCoordinator_CS.isOpen(this.OVERLAY_ID);pendingAction_$=$(null);handleToggle(){this.overlayCoordinator_CS.toggle(this.OVERLAY_ID)}handleAction(e){this.pendingAction_$()===null&&(this.pendingAction_$.set(e),this.actionSelected.emit(e),setTimeout(()=>{this.pendingAction_$()===e&&this.pendingAction_$.set(null)},800))}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=b({type:t,selectors:[["app-s-session-quickcast-overlay"]],hostAttrs:[1,"absolute","bottom-16","left-0","z-30","pointer-events-none"],inputs:{actions:[1,"actions"]},outputs:{actionSelected:"actionSelected"},standalone:!0,features:[w],decls:5,vars:7,consts:[[1,"flex","items-end","gap-2","pointer-events-auto"],["type","button","aria-label","QuickCast",1,"flex","items-center","justify-center","h-8","w-7","bg-neutral-900","border-2","border-l-0","border-neonCyan/60","rounded-r-lg","text-neonCyan","shadow-neon-glow-cyan","hover:border-neonCyan","hover:bg-neonCyan/10","transition-all","duration-200","ease-out",3,"click","title"],["fill","none","stroke","currentColor","viewBox","0 0 24 24","aria-hidden","true",1,"w-4","h-4"],["stroke-linecap","round","stroke-linejoin","round","stroke-width","2","d","M13 10V3L4 14h7v7l9-11h-7z"],[1,"bg-neutral-900","border-2","border-neonCyan/60","rounded-md","p-1.5","flex","flex-col","gap-1","min-w-[8rem]","max-w-[13rem]","shadow-neon-glow-cyan"],[1,"flex","items-center","justify-between","gap-1"],[1,"text-[10px]","uppercase","tracking-wider","text-neonCyan","font-mono","leading-none"],["type","button","title","Bez\xE1r\xE1s","aria-label","QuickCast panel bez\xE1r\xE1sa",1,"text-neutral-400","hover:text-neonCyan","leading-none","text-xs","px-1","transition-colors",3,"click"],[1,"flex","flex-col","gap-1"],["type","button",1,"px-1.5","py-0.5","rounded","border-2","border-neonCyan/60","text-neonCyan","text-[11px]","font-medium","hover:border-neonCyan","hover:bg-neonCyan/10","hover:shadow-neon-glow-cyan","disabled:opacity-40","disabled:cursor-not-allowed","transition-all","leading-tight",3,"disabled"],["type","button",1,"px-1.5","py-0.5","rounded","border-2","border-neonCyan/60","text-neonCyan","text-[11px]","font-medium","hover:border-neonCyan","hover:bg-neonCyan/10","hover:shadow-neon-glow-cyan","disabled:opacity-40","disabled:cursor-not-allowed","transition-all","leading-tight",3,"click","disabled"]],template:function(n,i){n&1&&(a(0,"div",0)(1,"button",1),f("click",function(){return i.handleToggle()}),E(),a(2,"svg",2),x(3,"path",3),o()(),_(4,nt,9,0,"div",4),o()),n&2&&(r(),M("-translate-x-2",!i.isOpen_$())("translate-x-2",i.isOpen_$()),p("title",i.isOpen_$()?"QuickCast bez\xE1r\xE1sa":"QuickCast megnyit\xE1sa"),R("aria-expanded",i.isOpen_$()),r(3),u(i.isOpen_$()?4:-1))},encapsulation:2})}return t})();var it=(t,d)=>d.provider+":::"+d.modelName,ot=()=>["border-neonPurple/60","text-neonPurple","shadow-[0_0_10px_rgba(168,85,247,0.4)]","hover:border-neonPurple","hover:bg-neonPurple/10"],at=()=>["border-neutral-700","text-neutral-500","hover:border-neutral-500","hover:bg-neutral-800/50"],rt=()=>["border-neonPurple/60","shadow-[0_0_10px_rgba(168,85,247,0.4)]"],st=()=>["border-neutral-700"],lt=()=>["text-neonPurple"],dt=()=>["text-neutral-400"];function ct(t,d){if(t&1&&(a(0,"div",10)(1,"span",11),s(2,"provider"),o(),a(3,"span",14),s(4),o()()),t&2){let e=c();r(3),p("title",e.providerName),r(),S(" ",e.providerName," ")}}function pt(t,d){if(t&1&&(a(0,"div",10)(1,"span",11),s(2,"model"),o(),a(3,"span",14),s(4),o()()),t&2){let e=c();r(3),p("title",e.model),r(),I(e.model)}}function ut(t,d){if(t&1&&(a(0,"div",10)(1,"span",11),s(2,"workflow"),o(),a(3,"span",14),s(4),o()()),t&2){let e=c();r(3),p("title",e.workflowId),r(),S(" ",e.workflowId," ")}}function mt(t,d){if(t&1){let e=k();a(0,"div",9)(1,"div",10)(2,"span",11),s(3,"status"),o(),a(4,"span",12),s(5),o()(),_(6,ct,5,2,"div",10)(7,pt,5,2,"div",10)(8,ut,5,2,"div",10),o(),a(9,"button",13),f("click",function(){C(e);let i=c(2);return v(i.handleStop())}),s(10),o()}if(t&2){let e=d,n=c(2);r(5),I(e.status),r(),u(e.providerName?6:-1),r(),u(e.model?7:-1),r(),u(e.workflowId?8:-1),r(),p("disabled",n.isBusy_$()),r(),S(" ",n.isBusy_$()?"Stopping\u2026":"Stop"," ")}}function _t(t,d){if(t&1&&(a(0,"option",18),s(1),o()),t&2){let e=d.$implicit;p("value",e.provider+":::"+e.modelName),r(),te(" ",e.provider," / ",e.modelName," ")}}function ft(t,d){if(t&1){let e=k();a(0,"span",15),s(1," Nincs assigned coordinator \u2014 v\xE1lassz modellt \xE9s kattints az Assign-ra. "),o(),a(2,"select",16),f("ngModelChange",function(i){C(e);let l=c(2);return v(l.selectedModelKey_$.set(i))}),a(3,"option",17),s(4,"\u2014 v\xE1lassz modellt \u2014"),o(),F(5,_t,2,3,"option",18,it),o(),a(7,"button",13),f("click",function(){C(e);let i=c(2);return v(i.handleAssign())}),s(8),o()}if(t&2){let e=c(2);r(2),p("ngModel",e.selectedModelKey_$()),r(3),V(e.modelOptions_$()),r(2),p("disabled",!e.selectedModelKey_$()||e.isBusy_$()),r(),S(" ",e.isBusy_$()?"Assigning\u2026":"Assign"," ")}}function xt(t,d){if(t&1){let e=k();a(0,"div",5)(1,"div",6)(2,"span",7),s(3," Coordinator "),o(),a(4,"button",8),f("click",function(){C(e);let i=c();return v(i.handleToggle())}),s(5," \xD7 "),o()(),_(6,mt,11,6)(7,ft,9,3),o()}if(t&2){let e,n=c();p("ngClass",n.isAssigned_$()?O(3,rt):O(4,st)),r(2),p("ngClass",n.isAssigned_$()?O(5,lt):O(6,dt)),r(4),u((e=n.assignedCoordinator_$())?6:7,e)}}var Dn=(()=>{class t{sessionId=A.required();coordinator_DS=y(he);registrySsot_CS=y(xe);overlayCoordinator_CS=y(G);OVERLAY_ID=P.coordinator;isOpen_$=this.overlayCoordinator_CS.isOpen(this.OVERLAY_ID);isBusy_$=$(!1);selectedModelKey_$=$("");modelOptions_$=h(()=>this.registrySsot_CS.enabledLlmModels_$());assignedCoordinator_$=h(()=>{let e=(this.sessionId()??"").trim();return!e||!this.coordinator_DS.coordinatedSessionIds_$().has(e)?null:this.coordinator_DS.globalCoordinatorsList_$().find(l=>{let m=(l.sessionId??"").trim(),T=(l.status??"").trim().toLowerCase();return m===e&&T!=="stopped"&&T!=="completed"})??null});isAssigned_$=h(()=>this.assignedCoordinator_$()!==null);ngOnInit(){this.coordinator_DS.globalCoordinatorsList_$().length===0&&this.coordinator_DS.loadAllCoordinatorsForManagementPage(),this.registrySsot_CS.ensureLoaded("llm")}handleToggle(){this.overlayCoordinator_CS.toggle(this.OVERLAY_ID)}handleAssign(){return H(this,null,function*(){let e=(this.sessionId()??"").trim(),n=this.selectedModelKey_$().trim();if(!e||!n||this.isBusy_$())return;let i=n.split(":::");if(i.length!==2)return;let l=i[0],m=i[1];if(!(!l||!m)){this.isBusy_$.set(!0);try{yield this.coordinator_DS.startCoordinator({sessionId:e,providerName:l,model:m}),this.coordinator_DS.loadAllCoordinatorsForManagementPage()}finally{this.isBusy_$.set(!1)}}})}handleStop(){return H(this,null,function*(){let e=(this.sessionId()??"").trim();if(!(!e||this.isBusy_$())){this.isBusy_$.set(!0);try{yield this.coordinator_DS.stopCoordinator(e),this.coordinator_DS.loadAllCoordinatorsForManagementPage()}finally{this.isBusy_$.set(!1)}}})}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=b({type:t,selectors:[["app-s-session-coordinator-overlay"]],hostAttrs:[1,"absolute","bottom-28","left-0","z-30","pointer-events-none"],inputs:{sessionId:[1,"sessionId"]},standalone:!0,features:[w],decls:6,vars:10,consts:[[1,"flex","items-end","gap-2","pointer-events-auto"],["type","button","aria-label","Coordinator",1,"relative","flex","items-center","justify-center","h-8","w-7","bg-neutral-900","border-2","border-l-0","rounded-r-lg","transition-all","duration-200","ease-out",3,"click","title","ngClass"],["viewBox","0 0 24 24","fill","none","stroke","currentColor","stroke-width","2","stroke-linecap","round","stroke-linejoin","round","aria-hidden","true",1,"w-4","h-4"],["cx","12","cy","12","r","10"],["points","16.24 7.76 14.12 14.12 7.76 16.24 9.88 9.88 16.24 7.76"],[1,"bg-neutral-900","border-2","rounded-lg","p-3","flex","flex-col","gap-2","min-w-[16rem]","max-w-xs",3,"ngClass"],[1,"flex","items-center","justify-between","gap-2"],[1,"text-[10px]","uppercase","tracking-wider","font-mono",3,"ngClass"],["type","button","title","Bez\xE1r\xE1s","aria-label","Coordinator panel bez\xE1r\xE1sa",1,"text-neutral-400","hover:text-neonPurple","leading-none","px-1","transition-colors",3,"click"],[1,"flex","flex-col","gap-1","text-xs"],[1,"flex","justify-between","gap-2"],[1,"text-neutral-500","font-mono","text-[10px]"],[1,"text-neutral-100"],["type","button",1,"self-end","px-2","py-1","rounded","border-2","border-neonPurple/60","text-neonPurple","text-xs","font-medium","hover:bg-neonPurple/10","hover:shadow-[0_0_10px_rgba(168,85,247,0.4)]","disabled:opacity-40","disabled:cursor-not-allowed","transition-all",3,"click","disabled"],[1,"text-neutral-100","truncate",3,"title"],[1,"text-[11px]","text-neutral-400"],[1,"bg-neutral-900","border","border-neutral-700","rounded","px-2","py-1","text-xs","text-neutral-100","focus:outline-none","focus:border-neonPurple/60",3,"ngModelChange","ngModel"],["value","","disabled",""],[3,"value"]],template:function(n,i){if(n&1&&(a(0,"div",0)(1,"button",1),f("click",function(){return i.handleToggle()}),E(),a(2,"svg",2),x(3,"circle",3)(4,"polygon",4),o()(),_(5,xt,8,7,"div",5),o()),n&2){let l;r(),M("-translate-x-2",!i.isOpen_$())("translate-x-2",i.isOpen_$()),p("title",i.isAssigned_$()?i.isOpen_$()?"Coordinator panel bez\xE1r\xE1sa":"Coordinator: "+((l=(l=i.assignedCoordinator_$())==null?null:l.status)!==null&&l!==void 0?l:""):i.isOpen_$()?"Coordinator panel bez\xE1r\xE1sa":"Nincs coordinator \u2014 assign-ol\xE1shoz kattints")("ngClass",i.isAssigned_$()?O(8,ot):O(9,at)),R("aria-expanded",i.isOpen_$()),r(4),u(i.isOpen_$()?5:-1)}},dependencies:[K,de,se,le,re,oe,ae],encapsulation:2})}return t})();var St=()=>["border-neonCyan/60","text-neonCyan","shadow-neon-glow-cyan","hover:border-neonCyan","hover:bg-neonCyan/10"],gt=()=>["border-neutral-700","text-neutral-500","hover:border-neutral-500","hover:text-neutral-300"];function ht(t,d){t&1&&(E(),a(0,"svg",1),x(1,"polygon",2)(2,"path",3)(3,"path",4),o())}function Ct(t,d){t&1&&(E(),a(0,"svg",1),x(1,"polygon",2)(2,"line",5)(3,"line",6),o())}var Ie=(()=>{class t{sessionId=A.required();isEnabled_$=$(!1);ngOnInit(){this.refreshEnabledFromStorage()}refreshEnabledFromStorage(){this.isEnabled_$.set(U.isEnabled(this.sessionId()))}handleToggle(){U.toggle(this.sessionId()),this.refreshEnabledFromStorage()}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=b({type:t,selectors:[["app-s-auto-read-tts-toggle"]],inputs:{sessionId:[1,"sessionId"]},standalone:!0,features:[w],decls:3,vars:6,consts:[["type","button",1,"relative","flex","items-center","justify-center","h-8","w-8","bg-neutral-900","border-2","rounded-md","transition-all","duration-200","ease-out",3,"click","title","ngClass"],["viewBox","0 0 24 24","fill","none","stroke","currentColor","stroke-width","2","stroke-linecap","round","stroke-linejoin","round","aria-hidden","true",1,"w-4","h-4"],["points","11 5 6 9 2 9 2 15 6 15 11 19 11 5"],["d","M15.54 8.46a5 5 0 0 1 0 7.07"],["d","M19.07 4.93a10 10 0 0 1 0 14.14"],["x1","23","y1","9","x2","17","y2","15"],["x1","17","y1","9","x2","23","y2","15"]],template:function(n,i){n&1&&(a(0,"button",0),f("click",function(){return i.handleToggle()}),_(1,ht,4,0,":svg:svg",1)(2,Ct,4,0,":svg:svg",1),o()),n&2&&(p("title",i.isEnabled_$()?"Auto-read assistant: ON (\xFAj asszisztens \xFCzenetek automatikusan felolvas\xE1sra ker\xFClnek). Klikk: kikapcsol\xE1s.":"Auto-read assistant: OFF. Klikk: bekapcsol\xE1s (csak az ezut\xE1n \xE9rkez\u0151 \xFCzenetek olvas\xF3dnak fel).")("ngClass",i.isEnabled_$()?O(4,St):O(5,gt)),R("aria-pressed",i.isEnabled_$()),r(),u(i.isEnabled_$()?1:2))},dependencies:[K],encapsulation:2})}return t})();function vt(t,d){if(t&1){let e=k();a(0,"button",26),f("click",function(){C(e);let i=c(2);return v(i.handleRestartRunnerClick())}),a(1,"span",13),E(),a(2,"svg",14),x(3,"path",27)(4,"path",28)(5,"path",29)(6,"path",30),o(),s(7," Restart Terminal Runner "),o()()}}function yt(t,d){if(t&1){let e=k();a(0,"div",5)(1,"div",6)(2,"span",7),s(3," Quick Settings "),o(),a(4,"button",8),f("click",function(){C(e);let i=c();return v(i.handleToggle())}),s(5," \xD7 "),o()(),a(6,"p",9),s(7," Plan-state v1 \u2014 minden funkci\xF3 "),a(8,"span",10),s(9,"disabled"),o(),s(10,"; bek\xF6t\xE9s Plans Feature Set keret\xE9ben k\xF6vetkezik (`2026-05-06-session-quick-settings-feature-set-plan.md`). "),o(),_(11,vt,8,0,"button",11),a(12,"div",12)(13,"span",13),E(),a(14,"svg",14),x(15,"path",15)(16,"path",16)(17,"path",17),o(),s(18," Auto-Read Assistant TTS "),o(),Q(),x(19,"app-s-auto-read-tts-toggle",18),o(),a(20,"button",19)(21,"span",13),E(),a(22,"svg",20),x(23,"rect",21)(24,"path",22)(25,"path",23)(26,"path",24),o(),s(27," Always-On Intelligent Voice Input "),o(),Q(),a(28,"span",25),s(29,"soon"),o()()()}if(t&2){let e=c();r(11),u(e.showRestartRunner()?11:-1),r(8),p("sessionId",e.sessionId())}}var Hn=(()=>{class t{sessionId=A.required();showRestartRunner=A(!1);restartRunnerClicked=q();overlayCoordinator_CS=y(G);OVERLAY_ID=P.quickSettings;isOpen_$=this.overlayCoordinator_CS.isOpen(this.OVERLAY_ID);handleToggle(){this.overlayCoordinator_CS.toggle(this.OVERLAY_ID)}handleRestartRunnerClick(){this.restartRunnerClicked.emit(),this.overlayCoordinator_CS.setOpen(null)}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=b({type:t,selectors:[["app-s-session-quick-settings-overlay"]],hostAttrs:[1,"absolute","bottom-40","left-0","z-30","pointer-events-none"],inputs:{sessionId:[1,"sessionId"],showRestartRunner:[1,"showRestartRunner"]},outputs:{restartRunnerClicked:"restartRunnerClicked"},standalone:!0,features:[w],decls:6,vars:7,consts:[[1,"flex","items-end","gap-2","pointer-events-auto"],["type","button","aria-label","Session Quick Settings",1,"relative","flex","items-center","justify-center","h-8","w-7","bg-neutral-900","border-2","border-l-0","border-neonGreen/60","rounded-r-lg","text-neonGreen","shadow-[0_0_10px_rgba(0,255,136,0.35)]","hover:border-neonGreen","hover:bg-neonGreen/10","transition-all","duration-200","ease-out",3,"click","title"],["viewBox","0 0 24 24","fill","none","stroke","currentColor","stroke-width","2","stroke-linecap","round","stroke-linejoin","round","aria-hidden","true",1,"w-4","h-4"],["cx","12","cy","12","r","3"],["d",`M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0
|
|
3
3
|
l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2
|
|
4
4
|
2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06
|
|
@@ -15,4 +15,4 @@ auto-send egyetlen \xFCzenetk\xE9nt, opcion\xE1lis chime hangjelz\xE9s a trigger
|
|
|
15
15
|
Spec: __specifications/poc/voice-input-continuous-and-mobile.md (REQ-VIM-CONT-002,
|
|
16
16
|
REQ-VIM-SEND-001). Hi\xE1nyz\xF3 r\xE9szek: per-segment \u2192 cycle-akkumul\xE1ci\xF3, silence-detect
|
|
17
17
|
\u2192 auto-send, cseng\u0151 hang. Nagyobb implement\xE1ci\xF3s csomag \u2014 Plan dokumentum r\xE9szletez.`,1,"flex","items-center","justify-between","gap-2","px-2","py-1.5","rounded","border-2","border-neutral-700","text-neutral-500","text-xs","bg-neutral-900/50","cursor-not-allowed","transition-colors"],["viewBox","0 0 24 24","fill","none","stroke","currentColor","stroke-width","2","stroke-linecap","round","stroke-linejoin","round","aria-hidden","true",1,"w-4","h-4","shrink-0"],["x","9","y","3","width","6","height","12","rx","3"],["d","M19 11a7 7 0 0 1-14 0"],["d","M12 18v3"],["d","M8 21h8"],[1,"text-[9px]","uppercase","tracking-wider","text-neutral-600","font-mono"],["type","button","title","Aktu\xE1lis CC session terminal runner kill + respawn. \xDAj termin\xE1l ablak ny\xEDlik a friss npm-build-tel; runner version-mismatch vagy no-ACK-fire hib\xE1k gyors fixje a session-b\u0151l, dashboard-ra navig\xE1l\xE1s n\xE9lk\xFCl.",1,"flex","items-center","justify-between","gap-2","px-2","py-1.5","rounded","border-2","border-neonGreen/40","text-neutral-300","text-xs","bg-neutral-900/50","hover:bg-neonGreen/10","hover:border-neonGreen","cursor-pointer","transition-colors",3,"click"],["d","M3 12a9 9 0 0 1 15.5-6.3L21 8"],["d","M21 3v5h-5"],["d","M21 12a9 9 0 0 1-15.5 6.3L3 16"],["d","M3 21v-5h5"]],template:function(n,i){n&1&&(a(0,"div",0)(1,"button",1),f("click",function(){return i.handleToggle()}),E(),a(2,"svg",2),x(3,"circle",3)(4,"path",4),o()(),_(5,yt,30,2,"div",5),o()),n&2&&(r(),M("-translate-x-2",!i.isOpen_$())("translate-x-2",i.isOpen_$()),p("title",i.isOpen_$()?"Session Quick Settings panel bez\xE1r\xE1sa":"Session Quick Settings \u2014 hamarosan: Restart Runner, Auto-Read TTS, Intelligent Voice Input. Plan dokumentum k\xE9szen, implement\xE1ci\xF3 folyamatban."),R("aria-expanded",i.isOpen_$()),r(4),u(i.isOpen_$()?5:-1))},dependencies:[Ie],encapsulation:2})}return t})();export{W as a,en as b,_n as c,vn as d,Dn as e,Hn as f};
|
|
18
|
-
//# sourceMappingURL=chunk-
|
|
18
|
+
//# sourceMappingURL=chunk-N55GOFVU.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{q as i}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{q as i}from"./chunk-Y6V4NGLU.js";var e=class{static build(r){let t=r.localAiKey.trim();if(!t.length)throw new Error("localAiSettings.key must be non-empty UUID for custom local LLM rows");return`${i.customLocalAi}--${t}`}static parseLocalAiKeyFromInstanceId(r){let t=`${i.customLocalAi}--`,o=r.instanceId.trim();if(!o.startsWith(t)||o.length<=t.length)throw new Error("Invalid custom local LLM instance id");return o.slice(t.length)}};export{e as a};
|
|
2
|
+
//# sourceMappingURL=chunk-NNUHTCXG.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{e as _}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{e as _}from"./chunk-TWK7BOB7.js";import{I as C,p as $}from"./chunk-Y6V4NGLU.js";import{C as l,a as c,aa as s,b as d,h as f,hb as S,k as n,p as a,t as h,xb as m,y as p}from"./chunk-TBMJSIBB.js";var i=f($());var g=(()=>{class e{http=l(m);coordinatorUrl(t){return`${C.api.baseUrl}/session/${t}/coordinator`}getStatus(t){return a(this.http.get(this.coordinatorUrl(t)))}startCoordinator(t){return a(this.http.post(this.coordinatorUrl(t.sessionId),{providerName:t.providerName,model:t.model,workflowId:t.workflowId,projectId:t.projectId}))}stopCoordinator(t){return a(this.http.delete(this.coordinatorUrl(t)))}pauseCoordinator(t){return a(this.http.post(`${this.coordinatorUrl(t)}/pause`,{}))}resumeCoordinator(t){return a(this.http.post(`${this.coordinatorUrl(t)}/resume`,{}))}listCoordinators(t){return a(this.http.get(`${this.coordinatorUrl(t)}/list`))}static \u0275fac=function(o){return new(o||e)};static \u0275prov=p({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})();var b="coordinator:",j=(()=>{class e{coordinator_AS=l(g);socket_CS=l(_);coordinator_$=s(null);decisions_$=s([]);lastGenerationStats_$=s(null);userInteractionPrompt_$=s(null);isLoading_$=s(!1);globalCoordinatorsList_$=s([]);globalCoordinatorsListLoading_$=s(!1);coordinatedSessionIds_$=S(()=>{let t=new Set;for(let o of this.globalCoordinatorsList_$()){let r=(o.status??"").trim().toLowerCase();if(r==="stopped"||r==="completed")continue;let u=o.sessionId?.trim();u&&t.add(u)}return t});activeSessionId=null;socketSubscription=null;ngOnDestroy(){this.cleanupSocketSubscription()}loadAllCoordinatorsForManagementPage(){return n(this,null,function*(){this.globalCoordinatorsListLoading_$.set(!0);try{let t=yield this.coordinator_AS.listCoordinators("_all");this.globalCoordinatorsList_$.set(t.coordinators??[])}catch(t){i.DyFM_Error.logSimple("CCAP_Coordinator_DS | loadAllCoordinatorsForManagementPage failed",t)}finally{this.globalCoordinatorsListLoading_$.set(!1)}})}loadCoordinatorStatus(t){return n(this,null,function*(){try{this.isLoading_$.set(!0);let o=yield this.coordinator_AS.getStatus(t);this.coordinator_$.set(o.coordinator),o.coordinator&&(this.decisions_$.set(o.coordinator.decisions??[]),this.setupSocketListeners(t))}catch(o){i.DyFM_Error.logSimple("CCAP_Coordinator_DS | loadCoordinatorStatus failed",o),this.coordinator_$.set(null)}finally{this.isLoading_$.set(!1)}})}startCoordinator(t){return n(this,null,function*(){try{this.isLoading_$.set(!0),this.decisions_$.set([]),this.userInteractionPrompt_$.set(null),this.lastGenerationStats_$.set(null);let o=yield this.coordinator_AS.startCoordinator(t);this.coordinator_$.set(o.coordinator),this.setupSocketListeners(t.sessionId)}catch(o){throw i.DyFM_Error.logSimple("CCAP_Coordinator_DS | startCoordinator failed",o),o}finally{this.isLoading_$.set(!1)}})}stopCoordinator(t){return n(this,null,function*(){try{yield this.coordinator_AS.stopCoordinator(t),this.coordinator_$.set(null),this.cleanupSocketSubscription()}catch(o){throw i.DyFM_Error.logSimple("CCAP_Coordinator_DS | stopCoordinator failed",o),o}})}pauseCoordinator(t){return n(this,null,function*(){try{yield this.coordinator_AS.pauseCoordinator(t),yield this.loadCoordinatorStatus(t)}catch(o){throw i.DyFM_Error.logSimple("CCAP_Coordinator_DS | pauseCoordinator failed",o),o}})}resumeCoordinator(t){return n(this,null,function*(){try{this.userInteractionPrompt_$.set(null),yield this.coordinator_AS.resumeCoordinator(t),yield this.loadCoordinatorStatus(t)}catch(o){throw i.DyFM_Error.logSimple("CCAP_Coordinator_DS | resumeCoordinator failed",o),o}})}setupSocketListeners(t){this.activeSessionId!==t&&(this.cleanupSocketSubscription(),this.activeSessionId=t,this.socketSubscription=this.socket_CS.event$.pipe(h(o=>o.event.startsWith(b))).subscribe(o=>{let r=o.payload&&typeof o.payload=="object"?o.payload:{};this.handleSocketEvent(o.event,r)}),i.DyFM_Log.info(`CCAP_Coordinator_DS | Socket subscription setup for session: ${t}`))}handleSocketEvent(t,o){switch(t){case"coordinator:stepCompleted":this.handleStepCompleted(o);break;case"coordinator:userInteractionRequired":this.handleUserInteractionRequired(o);break;case"coordinator:error":this.handleError(o);break;case"coordinator:resumed":this.userInteractionPrompt_$.set(null),this.coordinator_$.update(r=>r&&d(c({},r),{status:"active",pauseReason:null}));break;case"coordinator:completed":this.coordinator_$.update(r=>{if(!r)return r;let u=o.success?"completed":"failed";return d(c({},r),{status:u})});break;default:break}}handleStepCompleted(t){let o={coordinatorId:String(t.coordinatorId??""),sessionId:String(t.sessionId??""),action:String(t.action??""),reasoning:String(t.reasoning??""),generationStats:t.generationStats?t.generationStats:void 0},r={action:o.action,messageToAgent:null,statusUpdates:[],reasoning:o.reasoning,stopReason:null,userInteractionDetails:null,timestamp:new Date().toISOString()};this.decisions_$.set([...this.decisions_$(),r]),o.generationStats&&this.lastGenerationStats_$.set({timestamp:new Date().toISOString(),model:o.generationStats.model,providerName:o.generationStats.providerName,inputTokens:o.generationStats.inputTokens,outputTokens:o.generationStats.outputTokens,responseTimeMs:o.generationStats.responseTimeMs,action:o.action,reasoning:o.reasoning,messageToAgent:null})}handleUserInteractionRequired(t){this.userInteractionPrompt_$.set(String(t.details??"")),this.coordinator_$.update(o=>o&&d(c({},o),{status:"paused",pauseReason:String(t.details??"")}))}handleError(t){this.coordinator_$.update(o=>o&&d(c({},o),{status:"paused",pauseReason:String(t.error??"Unknown error")}))}cleanupSocketSubscription(){this.socketSubscription&&(this.socketSubscription.unsubscribe(),this.socketSubscription=null),this.activeSessionId=null}static \u0275fac=function(o){return new(o||e)};static \u0275prov=p({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})();export{j as a};
|
|
2
|
+
//# sourceMappingURL=chunk-OKTAADTQ.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{b as a}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{b as a}from"./chunk-EVMDNGBK.js";var f=class{static extract(t){if(t.toolName)return t.toolName;if(t.rawData){let s=t.rawData.name??t.rawData.tool_name??t.rawData.last_tool_name;if(typeof s=="string")return s}let o=t.bodyText.indexOf(":");return o>0?t.bodyText.substring(0,o).trim():t.bodyText.trim()}};var b=class e{static DEFAULT_GROUPABLE_TOOLS=new Set(["Read","Bash","Grep","Glob"]);static DEFAULT_MIN_GROUP_SIZE=2;static groupSubAgentItems(t,o){let s=new Map;for(let r=0;r<t.length;r++){let n=t[r];if(n.kind===a.tool&&n.toolName==="Agent"){let i=e.resolveAgentId(n);i&&s.set(i,{item:n,index:r})}}if(!s.size)return t;let c=new Map,d=new Set;for(let r=0;r<t.length;r++){let n=t[r];if(n.parentAgentId&&s.has(n.parentAgentId)){let i=c.get(n.parentAgentId)??[];i.push(n),c.set(n.parentAgentId,i),d.add(r)}}let l=[];for(let r=0;r<t.length;r++){if(d.has(r))continue;let n=t[r];if(n.kind===a.tool&&n.toolName==="Agent"){let i=e.resolveAgentId(n),p=c.get(i)??[],g=[n,...p],I=e.buildSubAgentLabel(n),A=e.extractSubagentType(n),y=e.groupConsecutiveToolItems(g,o);l.push({listKey:e.newListKey(),kind:a.subAgentGroup,bodyText:I,groupItems:y,groupToolName:A||"Agent",rawData:n.rawData})}else l.push(n)}return l}static groupConsecutiveToolItems(t,o){let s=o?.groupableTools??e.DEFAULT_GROUPABLE_TOOLS,c=o?.minGroupSize??e.DEFAULT_MIN_GROUP_SIZE,d=[],l=[],r="",n=()=>{if(!l.length)return;let i=l.filter(p=>p.kind===a.tool).length;i>=c?d.push({listKey:e.newListKey(),kind:a.toolGroup,bodyText:`${r} \xD7 ${i}`,groupItems:l,groupToolName:r}):d.push(...l),l=[],r=""};for(let i of t){if(i.kind===a.tool){let p=f.extract(i);if(s.has(p)){r&&r!==p&&n(),r=p,l.push(i);continue}}if(i.kind===a.toolResult&&l.length){l.push(i);continue}n(),d.push(i)}return n(),d}static resolveAgentId(t){return t.toolCallId?t.toolCallId:t.rawData&&typeof t.rawData.id=="string"?t.rawData.id:""}static extractSubagentType(t){let o=t.rawData?.input;if(!o||typeof o!="object")return"";let s=o.subagent_type;return typeof s=="string"?s:""}static extractDescription(t){let o=t.rawData?.input;if(!o||typeof o!="object")return"";let s=o.description;return typeof s=="string"?s:""}static buildSubAgentLabel(t){let o=e.extractSubagentType(t),s=e.extractDescription(t);return o?`${o}: ${s||"..."}`:s||"Sub-agent"}static newListKey(){return globalThis.crypto.randomUUID()}};var u=function(e){return e.user="user",e.assistant="assistant",e.tool="tool",e.toolResult="tool-result",e.status="status",e.error="error",e.info="info",e.result="result",e.thinking="thinking",e.statusUpdate="status-update",e}(u||{});var h=class e{static fromAssembledMessage(t,o){let s=e.mapRoleToKind(t.messageRole),c=t.toolResult?{text:t.toolResult.text,expandableContent:t.toolResult.expandableContent,rawData:t.toolResult.rawData,isError:t.toolResult.isError}:void 0,d=t.messageRole===u.tool&&t.toolName==="Edit"&&!!t.expandableContent;return{listKey:t.messageKey,kind:s,bodyText:t.bodyText,timestampIso:t.timestamp,toolName:t.toolName,expandableContent:t.expandableContent,pairedResult:c,rawData:t.rawData,subtype:t.subtype,isUserAligned:t.isUserAligned,headerStatusDot:t.headerStatusDot==="error"?"error":void 0,flags:{showCopy:!0,showRawInfo:!0,useEditDiffForExpandable:d},tts:e.buildTts(t,o),toolCallId:t.toolCallId,parentAgentId:t.parentAgentId}}static buildTts(t,o){if(!(!o||!(t.messageRole===u.user||t.messageRole===u.assistant)||!t.bodyText.trim().length))return{messageKey:t.messageKey,sessionId:o.sessionId,role:t.messageRole,content:t.bodyText,timestampIso:t.timestamp,hasTtsAudio:o.cachedKeys.has(t.messageKey)}}static mapRoleToKind(t){switch(t){case u.user:return a.userPrompt;case u.assistant:return a.assistant;case u.tool:return a.tool;case u.toolResult:return a.toolResult;case u.status:return a.status;case u.error:return a.error;case u.info:return a.info;case u.result:return a.result;case u.thinking:return a.thinking;case u.statusUpdate:return a.statusUpdate;default:return a.info}}};export{b as a,h as b};
|
|
2
|
+
//# sourceMappingURL=chunk-ONS7XQYD.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{p as v}from"./chunk-Y6V4NGLU.js";import{aa as p,h as g,k as m,y as f}from"./chunk-TBMJSIBB.js";var n=function(l){return l.stopped="stopped",l.standby="standby",l.running="running",l}(n||{});var C={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."},M={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."},h=class{static wrapGetUserMediaError(r){if(r instanceof Error&&"code"in r&&typeof r.code=="string"&&r.code.startsWith("CCAP_"))return r;let e=r instanceof DOMException||r instanceof Error?r.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 s=new Error(i);return s.code=t,s.cause=r,s}static getGetUserMediaErrorMessage(r){switch(r instanceof DOMException||r instanceof Error?r.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(r){switch(r instanceof DOMException||r instanceof Error?r.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(r){return`Media recording not available (reason: ${r}). Use HTTPS or localhost for microphone access.`}static getMediaUnavailableHint(r){return M[r]??""}static getMediaUnavailableMessage(r){return C[r]??"A hangfelv\xE9tel nem el\xE9rhet\u0151 ezen az oldalon."}};var o=g(v());var A=["audio/webm;codecs=opus","audio/webm","audio/ogg;codecs=opus","audio/ogg","audio/mp4"],z=(()=>{class l{volumeGate=.05;silenceTimeLimitMs=5*o.second;timesliceMs=5*o.second;segmentMaxChunks=6;segmentSoftFlushMinChunks=4;getUserMediaTimeoutMs=15*o.second;state_$=p(n.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;pendingOverlapPrevMs=0;newRecorderStartAt=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 m(this,null,function*(){if(this.state_$()===n.stopped)try{let e=h.getMediaRecordingAvailability();if(!e.supported){let s=`Media recording not available (reason: ${e.reason??"unknown"})`,a=new Error(s);throw a.code="CCAP_MEDIA_NOT_AVAILABLE",a}let t=null;try{let s=navigator.mediaDevices.getUserMedia({audio:{echoCancellation:!0,noiseSuppression:!0,autoGainControl:!0,channelCount:1}}),a=new Promise((d,u)=>{t=setTimeout(()=>{let c=new Error(`getUserMedia timed out after ${this.getUserMediaTimeoutMs}ms`);c.code="CCAP_MIC_TIMEOUT",u(c)},this.getUserMediaTimeoutMs)});this.mediaStream=yield Promise.race([s,a])}catch(s){throw h.wrapGetUserMediaError(s)}finally{t!==null&&clearTimeout(t)}let i=this.mediaStream.getAudioTracks()[0];i&&(o.DyFM_Log.info("[CCAP] mic track settings",i.getSettings()),i.onended=()=>{o.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(n.standby)}catch(e){throw this.state_$.set(n.stopped),e}})}stopListening(){let e=this.state_$()===n.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(n.stopped)}startCapture(){return m(this,null,function*(){try{if(this.mediaStream==null&&(yield this.startListening()),this.mediaStream==null)return;this.silenceStartTime=null,this.chunks=[],this.pendingOverlapPrevMs=0,this.newRecorderStartAt=null,this.createAndStartRecorder(),this.state_$.set(n.running)}catch(e){this.stopVolumeLoop(),this.state_$.set(n.stopped),this.onErrorCb?.(e)}})}stopCapture(e=!1,t=!1){if(this.isRestartingForFlush=!1,!(this.mediaRecorder==null||this.state_$()!==n.running)){try{this.mediaRecorder.stop()}catch(i){o.DyFM_Log.info("[CCAP] mediaRecorder.stop() failed (likely already inactive)",i),this.mediaRecorder=null,this.flushChunksAsSegment(e),this.state_$.set(this.mediaStream?n.standby:n.stopped);return}if(t){this.mediaRecorder=null,this.flushChunksAsSegment(e),this.state_$.set(this.mediaStream?n.standby:n.stopped);return}this.mediaRecorder.onstop=()=>{this.mediaRecorder=null,this.flushChunksAsSegment(e),this.state_$.set(this.mediaStream?n.standby:n.stopped)}}}createRecorder(e){if(!this.mediaStream)return null;let t=new MediaRecorder(this.mediaStream,{mimeType:this.selectedMime,audioBitsPerSecond:128e3});return t.ondataavailable=i=>{if(i.data.size>0&&e.push(i.data),this.mediaRecorder!==t||this.state_$()!==n.running||this.isRestartingForFlush)return;let s=e.length>=this.segmentMaxChunks,a=e.length>=this.segmentSoftFlushMinChunks&&this.silenceStartTime!==null;(s||a)&&this.restartRecorderForFlush()},t}createAndStartRecorder(){let e=this.createRecorder(this.chunks);e&&(this.mediaRecorder=e,e.start(this.timesliceMs))}restartRecorderForFlush(){if(!this.mediaRecorder||this.mediaRecorder.state==="inactive"||!this.mediaStream)return;this.isRestartingForFlush=!0,this.silenceStartTime=null;let e=this.mediaRecorder,t=this.chunks,i=[],s=this.createRecorder(i);if(!s){this.isRestartingForFlush=!1;return}if(this.mediaRecorder=s,this.chunks=i,o.DyFM_Log.info("[CCAP] restartRecorderForFlush (dual): starting new recorder before stopping old"),s.start(this.timesliceMs),s.state==="recording"){this.newRecorderStartAt=Date.now(),this.finalizeFlushByStoppingOldRecorder(e,t);return}let a=!1,d=c=>{a||(a=!0,s.removeEventListener("start",u),this.newRecorderStartAt===null&&c!==null&&(this.newRecorderStartAt=c),this.finalizeFlushByStoppingOldRecorder(e,t))},u=()=>{this.newRecorderStartAt=Date.now(),d(null)};s.addEventListener("start",u),setTimeout(()=>{d(Date.now()-500)},500)}finalizeFlushByStoppingOldRecorder(e,t){let i=this.pendingOverlapPrevMs,s=this.newRecorderStartAt;e.onstop=()=>{let a=Date.now();this.pendingOverlapPrevMs=s!==null?Math.max(0,a-s):0;let d=t.length;this.flushChunksFromArray(t,!1,i),o.DyFM_Log.info(`[CCAP] restartRecorderForFlush (dual): flushed ${d} old chunks as segment, overlapPrevMs=${i}, nextOverlapPrevMs=${this.pendingOverlapPrevMs}`),this.isRestartingForFlush=!1};try{e.stop()}catch{let a=Date.now();this.pendingOverlapPrevMs=s!==null?Math.max(0,a-s):0,this.flushChunksFromArray(t,!1,i),this.isRestartingForFlush=!1}}flushChunksFromArray(e,t,i){if(e.length===0)return;let s=new Blob(e,{type:this.selectedMime}),a={mimeType:this.selectedMime,filename:`audio-${Date.now()}.${this.getExtension()}`,chunkIndex:this.chunkIndex++,isFinal:t,overlapPrevMs:i};this.onChunkCb?.(s,a)}flushChunksAsSegment(e){if(this.chunks.length===0)return;let t=this.pendingOverlapPrevMs;this.pendingOverlapPrevMs=0;let i=new Blob(this.chunks,{type:this.selectedMime}),s={mimeType:this.selectedMime,filename:`audio-${Date.now()}.${this.getExtension()}`,chunkIndex:this.chunkIndex++,isFinal:e,overlapPrevMs:t};this.chunks=[],this.onChunkCb?.(i,s)}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";o.DyFM_Log.info("[CCAP] AudioContext state changed:",i),i==="suspended"&&this.state_$()!==n.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 d=0;d<e.length;d++)i+=Math.abs(e[d]);let s=i/e.length;this.onVolumeCb(s);let a=this.state_$();if(a===n.standby&&s>=this.volumeGate){this.startCapture(),this.volumeAnimationId=requestAnimationFrame(t);return}a===n.running&&!this.isRestartingForFlush&&(s<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=()=>{o.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||l)};static \u0275prov=f({token:l,factory:l.\u0275fac,providedIn:"root"})}return l})();export{n as a,h as b,z as c};
|
|
2
|
+
//# sourceMappingURL=chunk-OYB7GU43.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
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 * BUG-VOICE-INPUT-INTER-MESSAGE-GAP-001 Slice 2 (cycle 945): a dual-recorder swap-átfedés\n * ms-ben. A `restartRecorderForFlush` `finalizeFlushByStoppingOldRecorder.onstop`-ja\n * `Date.now() - newRecorderStartAt`-ra állítja, ekkor ez az érték az AKTUÁLISAN futó\n * (új) recorder eventuális szegmensének overlap-prev-ms-je. A következő szegmens-flush\n * (flushChunksFromArray következő swap-pel VAGY flushChunksAsSegment user-stoppal)\n * olvassa, és resetel 0-ra.\n */\n private pendingOverlapPrevMs: number = 0;\n\n /** Új recorder start-timestamp (ms); a swap finalize-jénél overlap-szám pause-jához. */\n private newRecorderStartAt: 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 // Slice 2: fresh capture-ciklus, nincs előző szegmens → nincs overlap.\n this.pendingOverlapPrevMs = 0;\n this.newRecorderStartAt = null;\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 + indítás a meglévő stream-mel.\n *\n * BUG-VOICE-INPUT-INTER-MESSAGE-GAP-001 Slice 1 (cycle 944): a recorder\n * `ondataavailable` callback-je `chunksTarget`-be ír (closure-capture). Így\n * a `restartRecorderForFlush` dual-recorder pattern-ben minden recorder\n * a SAJÁT chunks array-ébe gyűjt — nincs interferencia a régi és új között.\n */\n private createRecorder(chunksTarget: Blob[]): MediaRecorder | null {\n if (!this.mediaStream) {\n return null;\n }\n const recorder: MediaRecorder = new MediaRecorder(this.mediaStream, {\n mimeType: this.selectedMime,\n audioBitsPerSecond: 128000,\n });\n recorder.ondataavailable = (ev: BlobEvent): void => {\n if (ev.data.size > 0) {\n chunksTarget.push(ev.data);\n }\n // Stale recorder (post-stop, dual-recorder swap utáni régi) NE triggerelje a flush-t.\n if (this.mediaRecorder !== recorder) {\n return;\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 const reachedMax: boolean = chunksTarget.length >= this.segmentMaxChunks;\n const isSoftFlush: boolean = chunksTarget.length >= this.segmentSoftFlushMinChunks\n && this.silenceStartTime !== null;\n if (reachedMax || isSoftFlush) {\n this.restartRecorderForFlush();\n }\n };\n return recorder;\n }\n\n /**\n * Recorder létrehozás + indítás (startCapture init-path-ja).\n */\n private createAndStartRecorder(): void {\n const recorder: MediaRecorder | null = this.createRecorder(this.chunks);\n if (!recorder) {\n return;\n }\n this.mediaRecorder = recorder;\n recorder.start(this.timesliceMs);\n }\n\n /**\n * BUG-VOICE-INPUT-INTER-MESSAGE-GAP-001 Slice 1 (cycle 944) — dual-recorder\n * mid-recording flush. A régi `mediaRecorder.stop()` ELŐTT az új recorder\n * már létrejön + indul; `state === 'recording'` után jön a stop. Így a\n * korábbi ~20-60 ms gap-ablak (amikor semmilyen recorder nem volt aktív)\n * eltűnik.\n *\n * A régi `onstop` flush-olja a saját chunks-ot (closure-captured oldChunks);\n * az új recorder már `chunks_$`-be ír.\n */\n private restartRecorderForFlush(): void {\n if (!this.mediaRecorder || this.mediaRecorder.state === 'inactive') {\n return;\n }\n if (!this.mediaStream) {\n return;\n }\n this.isRestartingForFlush = true;\n // Silence timer reset: ne kelljen a 5s silence-detect-nek azonnal stopCapture-t hívnia.\n this.silenceStartTime = null;\n\n const oldRecorder: MediaRecorder = this.mediaRecorder;\n const oldChunks: Blob[] = this.chunks;\n const newChunks: Blob[] = [];\n const newRecorder: MediaRecorder | null = this.createRecorder(newChunks);\n if (!newRecorder) {\n this.isRestartingForFlush = false;\n return;\n }\n\n // Swap: ettől fogva az új recorder a 'this.mediaRecorder' — a régi ondataavailable\n // closure-ja továbbra is oldChunks-ba ír (capture), így nincs collision.\n this.mediaRecorder = newRecorder;\n this.chunks = newChunks;\n\n DyFM_Log.info('[CCAP] restartRecorderForFlush (dual): starting new recorder before stopping old');\n newRecorder.start(this.timesliceMs);\n\n // A spec szerint a state szinkron 'recording'-ra vált a start() után; gyakorlatban\n // ez a vezető böngészőkben (Chrome/Firefox/Safari) így viselkedik. Ha mégsem\n // (edge case), `onstart` event-tel várunk; safety timeout 500ms.\n if (newRecorder.state === 'recording') {\n // Slice 2: új recorder start-timestamp az overlap-szám alapja.\n this.newRecorderStartAt = Date.now();\n this.finalizeFlushByStoppingOldRecorder(oldRecorder, oldChunks);\n return;\n }\n // Dupla-tüzelés védelem: az onstart event ÉS a safety timeout is hívná a finalize-t —\n // de csak az első futhat le (a finalized lokál flag-gel zárolva).\n let finalized: boolean = false;\n const finalizeOnce = (estimatedStart: number | null): void => {\n if (finalized) {\n return;\n }\n finalized = true;\n newRecorder.removeEventListener('start', onNewRecorderStart);\n if (this.newRecorderStartAt === null && estimatedStart !== null) {\n this.newRecorderStartAt = estimatedStart;\n }\n this.finalizeFlushByStoppingOldRecorder(oldRecorder, oldChunks);\n };\n const onNewRecorderStart = (): void => {\n this.newRecorderStartAt = Date.now();\n finalizeOnce(null);\n };\n newRecorder.addEventListener('start', onNewRecorderStart);\n setTimeout((): void => {\n // Safety branch: ha az onstart timeout-on belül NEM tüzelt, akkor is finalize-elünk.\n // Az overlap konzervatívan timeout-ms (max), mert nincs pontos start-time → 500ms-szal becsülünk.\n finalizeOnce(Date.now() - 500);\n }, 500);\n }\n\n /**\n * Dual-recorder flush befejezése: a régi recorder onstop callback-jét beállítjuk\n * (flush oldChunks), majd stop() — az új már fut, zero-gap.\n *\n * Slice 2 (cycle 945): az `oldRecorder` által emittált szegmens `overlapPrevMs`-je\n * a megelőző swap-átfedés (`this.pendingOverlapPrevMs`, amit a PREVIOUS finalize állított);\n * az AKTUÁLIS swap végén kiszámolt új átfedés (`Date.now() - newRecorderStartAt`) viszont\n * a következő szegmensé — eltároljuk `this.pendingOverlapPrevMs`-be a következő flush-ig.\n */\n private finalizeFlushByStoppingOldRecorder(oldRecorder: MediaRecorder, oldChunks: Blob[]): void {\n const overlapForOldSegment: number = this.pendingOverlapPrevMs;\n const startedAt: number | null = this.newRecorderStartAt;\n oldRecorder.onstop = (): void => {\n const oldEndAt: number = Date.now();\n // A NEW recorder szegmense lesz az átfedést tartalmazó (overlap a tail-jén az oldnak,\n // illetve a head-jén az újnak). Ezt eltároljuk a következő flushig.\n this.pendingOverlapPrevMs = startedAt !== null ? Math.max(0, oldEndAt - startedAt) : 0;\n const count: number = oldChunks.length;\n this.flushChunksFromArray(oldChunks, false, overlapForOldSegment);\n DyFM_Log.info(\n `[CCAP] restartRecorderForFlush (dual): flushed ${count} old chunks as segment, `\n + `overlapPrevMs=${overlapForOldSegment}, nextOverlapPrevMs=${this.pendingOverlapPrevMs}`,\n );\n this.isRestartingForFlush = false;\n };\n try {\n oldRecorder.stop();\n } catch {\n // Már inactive — manuál flush; az átfedés-update szinkronban itt is megtörténik.\n const fallbackEndAt: number = Date.now();\n this.pendingOverlapPrevMs = startedAt !== null ? Math.max(0, fallbackEndAt - startedAt) : 0;\n this.flushChunksFromArray(oldChunks, false, overlapForOldSegment);\n this.isRestartingForFlush = false;\n }\n }\n\n /**\n * Adott chunks array blob-ba összeáll, onChunkCb hívás. Az array-t NEM ürítjük\n * (a hívó felelőssége; ehhez használja a `flushChunksAsSegment(isFinal)`-t).\n * Slice 2 (cycle 945): `overlapPrevMs` paraméter a swap-átfedés ms-e.\n */\n private flushChunksFromArray(arr: Blob[], isFinal: boolean, overlapPrevMs: number): void {\n if (arr.length === 0) {\n return;\n }\n const blob: Blob = new Blob(arr, { 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 overlapPrevMs: overlapPrevMs,\n };\n this.onChunkCb?.(blob, meta);\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 * Slice 2 (cycle 945): a meta `overlapPrevMs`-jét a `pendingOverlapPrevMs`-ből olvassa\n * (az utolsó dual-swap végén kiszámolt érték), majd reseteli 0-ra.\n */\n private flushChunksAsSegment(isFinal: boolean): void {\n if (this.chunks.length === 0) {\n return;\n }\n const overlapPrevMs: number = this.pendingOverlapPrevMs;\n this.pendingOverlapPrevMs = 0;\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 overlapPrevMs: overlapPrevMs,\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": "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",
|
|
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", "pendingOverlapPrevMs", "newRecorderStartAt", "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", "createRecorder", "chunksTarget", "recorder", "mimeType", "audioBitsPerSecond", "ondataavailable", "ev", "data", "size", "push", "reachedMax", "length", "isSoftFlush", "restartRecorderForFlush", "start", "state", "oldRecorder", "oldChunks", "newChunks", "newRecorder", "Date", "now", "finalizeFlushByStoppingOldRecorder", "finalized", "finalizeOnce", "estimatedStart", "removeEventListener", "onNewRecorderStart", "addEventListener", "overlapForOldSegment", "startedAt", "oldEndAt", "Math", "max", "count", "flushChunksFromArray", "fallbackEndAt", "arr", "isFinal", "overlapPrevMs", "blob", "Blob", "type", "meta", "filename", "AudioContext", "resume", "catch", "onstatechange", "ctxState", "createMediaStreamSource", "createAnalyser", "fftSize", "smoothingTimeConstant", "connect", "timeDomainArray", "Float32Array", "tick", "getFloatTimeDomainData", "sum", "i", "abs", "volume", "requestAnimationFrame", "cancelAnimationFrame", "close", "factory", "\u0275fac", "providedIn"]
|
|
7
|
+
}
|