@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.
Files changed (437) hide show
  1. package/cli/build/_collections/update/update-verify-install.interface.d.ts +23 -0
  2. package/cli/build/_collections/update/update-verify-install.interface.d.ts.map +1 -0
  3. package/cli/build/_collections/update/update-verify-install.interface.js +3 -0
  4. package/cli/build/_collections/update/update-verify-install.interface.js.map +1 -0
  5. package/cli/build/_collections/update/update-verify-install.util.d.ts +50 -0
  6. package/cli/build/_collections/update/update-verify-install.util.d.ts.map +1 -0
  7. package/cli/build/_collections/update/update-verify-install.util.js +179 -0
  8. package/cli/build/_collections/update/update-verify-install.util.js.map +1 -0
  9. package/cli/build/_collections/update/update-verify-install.util.spec.d.ts +6 -0
  10. package/cli/build/_collections/update/update-verify-install.util.spec.d.ts.map +1 -0
  11. package/cli/build/_collections/update/update-verify-install.util.spec.js +117 -0
  12. package/cli/build/_collections/update/update-verify-install.util.spec.js.map +1 -0
  13. package/cli/build/_commands/cc-inspect-options.interface.d.ts +11 -0
  14. package/cli/build/_commands/cc-inspect-options.interface.d.ts.map +1 -0
  15. package/cli/build/_commands/cc-inspect-options.interface.js +3 -0
  16. package/cli/build/_commands/cc-inspect-options.interface.js.map +1 -0
  17. package/cli/build/_commands/cc-inspect.d.ts +33 -0
  18. package/cli/build/_commands/cc-inspect.d.ts.map +1 -0
  19. package/cli/build/_commands/cc-inspect.js +228 -0
  20. package/cli/build/_commands/cc-inspect.js.map +1 -0
  21. package/cli/build/_commands/input.d.ts +55 -0
  22. package/cli/build/_commands/input.d.ts.map +1 -0
  23. package/cli/build/_commands/input.interface.d.ts +21 -0
  24. package/cli/build/_commands/input.interface.d.ts.map +1 -0
  25. package/cli/build/_commands/input.interface.js +3 -0
  26. package/cli/build/_commands/input.interface.js.map +1 -0
  27. package/cli/build/_commands/input.js +183 -0
  28. package/cli/build/_commands/input.js.map +1 -0
  29. package/cli/build/_commands/input.spec.d.ts +8 -0
  30. package/cli/build/_commands/input.spec.d.ts.map +1 -0
  31. package/cli/build/_commands/input.spec.js +63 -0
  32. package/cli/build/_commands/input.spec.js.map +1 -0
  33. package/cli/build/_commands/skill-doc.d.ts +63 -0
  34. package/cli/build/_commands/skill-doc.d.ts.map +1 -0
  35. package/cli/build/_commands/skill-doc.interface.d.ts +19 -0
  36. package/cli/build/_commands/skill-doc.interface.d.ts.map +1 -0
  37. package/cli/build/_commands/skill-doc.interface.js +3 -0
  38. package/cli/build/_commands/skill-doc.interface.js.map +1 -0
  39. package/cli/build/_commands/skill-doc.js +421 -0
  40. package/cli/build/_commands/skill-doc.js.map +1 -0
  41. package/cli/build/_commands/skill-doc.spec.d.ts +10 -0
  42. package/cli/build/_commands/skill-doc.spec.d.ts.map +1 -0
  43. package/cli/build/_commands/skill-doc.spec.js +112 -0
  44. package/cli/build/_commands/skill-doc.spec.js.map +1 -0
  45. package/cli/build/_commands/update.d.ts.map +1 -1
  46. package/cli/build/_commands/update.js +59 -0
  47. package/cli/build/_commands/update.js.map +1 -1
  48. package/cli/build/_commands/update.spec.js +12 -0
  49. package/cli/build/_commands/update.spec.js.map +1 -1
  50. package/cli/build/program.js +51 -0
  51. package/cli/build/program.js.map +1 -1
  52. package/client-dist/{agent-instances.module-V7DKSWVC.js → agent-instances.module-4ADMPXCV.js} +2 -2
  53. package/client-dist/ca.module-RVGC3WQC.js +5 -0
  54. package/client-dist/{ca.module-MVE3OLDD.js.map → ca.module-RVGC3WQC.js.map} +3 -3
  55. package/client-dist/cc-usage-dashboard.component-OQS2BC4L.js +2 -0
  56. package/client-dist/cc-usage-dashboard.component-OQS2BC4L.js.map +7 -0
  57. package/client-dist/cc.module-SPB35JNX.js +4 -0
  58. package/client-dist/cc.module-SPB35JNX.js.map +7 -0
  59. package/client-dist/{chunk-7HSUCNW5.js → chunk-2ATSF4KC.js} +7 -3
  60. package/client-dist/{chunk-7HSUCNW5.js.map → chunk-2ATSF4KC.js.map} +2 -2
  61. package/client-dist/{chunk-CRYF37M7.js → chunk-3HJWN4W6.js} +2 -2
  62. package/client-dist/{chunk-D2UUXA6L.js → chunk-4EV32FFZ.js} +2 -2
  63. package/client-dist/{chunk-AX7QIINI.js → chunk-4H3E32UH.js} +2 -2
  64. package/client-dist/{chunk-KYVIZZWW.js → chunk-4LCJ4GNK.js} +19 -19
  65. package/client-dist/chunk-4LCJ4GNK.js.map +7 -0
  66. package/client-dist/{chunk-OUBNMT7L.js → chunk-5NW5UGVZ.js} +2 -2
  67. package/client-dist/{chunk-HLNT234H.js → chunk-AM5URSKV.js} +2 -2
  68. package/client-dist/{chunk-SYCUR4MY.js → chunk-AMROWQBM.js} +2 -2
  69. package/client-dist/{chunk-PTCJL62W.js → chunk-AR6EOT63.js} +2 -2
  70. package/client-dist/{chunk-OLK5MJ4J.js → chunk-B25EGDHU.js} +2 -2
  71. package/client-dist/{chunk-4SFV57IQ.js → chunk-BQTJHETS.js} +2 -2
  72. package/client-dist/{chunk-XTUQJ3W6.js → chunk-COOWEMEW.js} +2 -2
  73. package/client-dist/{chunk-TOFOK5W7.js → chunk-E3JXFFHE.js} +2 -2
  74. package/client-dist/{chunk-OQW6FXRJ.js → chunk-ESIGVRCK.js} +2 -2
  75. package/client-dist/{chunk-JMZKJLUE.js → chunk-EVMDNGBK.js} +2 -2
  76. package/client-dist/{chunk-6GSTJE3R.js → chunk-F6VMAVI5.js} +2 -2
  77. package/client-dist/chunk-FRVRMJQF.js +2 -0
  78. package/client-dist/chunk-FRVRMJQF.js.map +7 -0
  79. package/client-dist/chunk-G5SK3OBM.js +2 -0
  80. package/client-dist/chunk-G5SK3OBM.js.map +7 -0
  81. package/client-dist/{chunk-VO5ZLOZM.js → chunk-GBOES7QW.js} +2 -2
  82. package/client-dist/{chunk-2OAF6FCL.js → chunk-GTERKRTR.js} +2 -2
  83. package/client-dist/{chunk-7X22BWF7.js → chunk-HD4CODAD.js} +2 -2
  84. package/client-dist/{chunk-2EMFCVYO.js → chunk-I3FSMGMK.js} +2 -2
  85. package/client-dist/{chunk-VGTXKD6D.js → chunk-IFYHOOVA.js} +2 -2
  86. package/client-dist/{chunk-IINV7GMO.js → chunk-IUAZJ3PT.js} +2 -2
  87. package/client-dist/chunk-IUAZJ3PT.js.map +7 -0
  88. package/client-dist/{chunk-PFBJ7ZHP.js → chunk-IVLMVAVJ.js} +2 -2
  89. package/client-dist/chunk-KBMXCICX.js +2 -0
  90. package/client-dist/chunk-KBMXCICX.js.map +7 -0
  91. package/client-dist/{chunk-3D32XY5M.js → chunk-KIKSSJKL.js} +2 -2
  92. package/client-dist/{chunk-U2EBQMSE.js → chunk-LPNQ5PRN.js} +2 -2
  93. package/client-dist/{chunk-4JKJRGJX.js → chunk-MO37SUK2.js} +2 -2
  94. package/client-dist/{chunk-BC7H7K5F.js → chunk-MYVEHPA7.js} +2 -2
  95. package/client-dist/{chunk-JEHOIN7Y.js → chunk-N55GOFVU.js} +2 -2
  96. package/client-dist/{chunk-R5WCLLO5.js → chunk-NNUHTCXG.js} +2 -2
  97. package/client-dist/{chunk-TP2634XD.js → chunk-OKTAADTQ.js} +2 -2
  98. package/client-dist/{chunk-DURLBTAJ.js → chunk-ONS7XQYD.js} +2 -2
  99. package/client-dist/chunk-OYB7GU43.js +2 -0
  100. package/client-dist/chunk-OYB7GU43.js.map +7 -0
  101. package/client-dist/{chunk-7SAFEFWU.js → chunk-PVSQ5ZEZ.js} +14 -14
  102. package/client-dist/{chunk-7SAFEFWU.js.map → chunk-PVSQ5ZEZ.js.map} +3 -3
  103. package/client-dist/{chunk-PG7CJVEP.js → chunk-PZN2OI7U.js} +2 -2
  104. package/client-dist/{chunk-C4JDDOQR.js → chunk-QUD3BEHN.js} +2 -2
  105. package/client-dist/{chunk-DJVWZQNB.js → chunk-QUEYZI42.js} +2 -2
  106. package/client-dist/chunk-R2IBKJ4K.js +2 -0
  107. package/client-dist/chunk-R2IBKJ4K.js.map +7 -0
  108. package/client-dist/{chunk-3TMVRWAB.js → chunk-RAHCHCWR.js} +2 -2
  109. package/client-dist/{chunk-SQWHJTFE.js → chunk-RCCUSGIN.js} +2 -2
  110. package/client-dist/{chunk-GADEZIXI.js → chunk-RL5LPTPO.js} +2 -2
  111. package/client-dist/{chunk-5C3KCWYF.js → chunk-SDVXPGB7.js} +2 -2
  112. package/client-dist/{chunk-CLQC45GB.js → chunk-TNLHQRL7.js} +2 -2
  113. package/client-dist/{chunk-JZHYGU3K.js → chunk-TWK7BOB7.js} +2 -2
  114. package/client-dist/{chunk-ILG5WENK.js → chunk-U62YECNK.js} +2 -2
  115. package/client-dist/{chunk-RSPVPEQ4.js → chunk-UOC6UYZT.js} +2 -2
  116. package/client-dist/{chunk-AI7WKHRQ.js → chunk-VDQROW6J.js} +2 -2
  117. package/client-dist/{chunk-3PA6BJES.js → chunk-VMXIXZV2.js} +2 -2
  118. package/client-dist/chunk-VQ4GBHH7.js +2 -0
  119. package/client-dist/chunk-VQ4GBHH7.js.map +7 -0
  120. package/client-dist/{chunk-CFHQS3UB.js → chunk-WRI37SX4.js} +2 -2
  121. package/client-dist/{chunk-MS5OG7JD.js → chunk-XLSL262Q.js} +2 -2
  122. package/client-dist/{chunk-SLSTIBOT.js → chunk-Y6V4NGLU.js} +2 -2
  123. package/client-dist/{chunk-SLSTIBOT.js.map → chunk-Y6V4NGLU.js.map} +1 -1
  124. package/client-dist/{chunk-3PLWSRB4.js → chunk-YN4H6MW2.js} +2 -2
  125. package/client-dist/{chunk-OEEQNIJG.js → chunk-Z5FUR5ZW.js} +2 -2
  126. package/client-dist/{chunk-MY75XBDH.js → chunk-ZCHMBEHT.js} +2 -2
  127. package/client-dist/{chunk-LIQPVSH3.js → chunk-ZPJ6KYMA.js} +2 -2
  128. package/client-dist/consultant.module-UWXLFLDS.js +3 -0
  129. package/client-dist/{consultant.module-WUUVSVHL.js.map → consultant.module-UWXLFLDS.js.map} +3 -3
  130. package/client-dist/{crd.module-IRGVOYD5.js → crd.module-2I2BDC3A.js} +2 -2
  131. package/client-dist/{dashboard.module-NPPSZHO6.js → dashboard.module-X2A6LOTA.js} +2 -2
  132. package/client-dist/{do.module-GKQTJOXR.js → do.module-CJWEKZ4L.js} +2 -2
  133. package/client-dist/{document-library.module-JK3K7QNJ.js → document-library.module-WJSFZPA7.js} +2 -2
  134. package/client-dist/{embedding-eval.module-LVESAMPN.js → embedding-eval.module-FOALIAQW.js} +2 -2
  135. package/client-dist/{embedding-registry.module-3ECACZZ3.js → embedding-registry.module-SS646R4H.js} +2 -2
  136. package/client-dist/err.module-SR4ZAOQH.js +6 -0
  137. package/client-dist/err.module-SR4ZAOQH.js.map +7 -0
  138. package/client-dist/{feedback.module-AHG7462C.js → feedback.module-T3MZQKXV.js} +2 -2
  139. package/client-dist/{host-runtime-mcp.module-XFUI7B65.js → host-runtime-mcp.module-FBZZGQGD.js} +2 -2
  140. package/client-dist/index.html +2 -2
  141. package/client-dist/{live-dev-pipeline.module-OMK67DGM.js → live-dev-pipeline.module-OKQYFSJL.js} +2 -2
  142. package/client-dist/{logs.module-FWACECVV.js → logs.module-SHHOD5XW.js} +2 -2
  143. package/client-dist/{main-H4AYPQ2E.js → main-L3WW2VTB.js} +4 -4
  144. package/client-dist/{main-H4AYPQ2E.js.map → main-L3WW2VTB.js.map} +3 -3
  145. package/client-dist/{master-control-remote-poc.module-GQ6RMPRB.js → master-control-remote-poc.module-ITXHYU5K.js} +2 -2
  146. package/client-dist/{mobile-app.module-YSARX6QC.js → mobile-app.module-Q3W3PU4O.js} +2 -2
  147. package/client-dist/{model-registry.module-SJOUSDXZ.js → model-registry.module-DGN55LTQ.js} +2 -2
  148. package/client-dist/oc.module-DYSATWML.js +3 -0
  149. package/client-dist/{oc.module-CDGBJ6I4.js.map → oc.module-DYSATWML.js.map} +3 -3
  150. package/client-dist/orc.module-NQO6OLPK.js +2 -0
  151. package/client-dist/orc.module-NQO6OLPK.js.map +7 -0
  152. package/client-dist/{project-management.module-LWZLB6VU.js → project-management.module-T7NBKKSR.js} +2 -2
  153. package/client-dist/project-source-routed.module-YO54LEGN.js +2 -0
  154. package/client-dist/{scheduler.module-VH647PWD.js → scheduler.module-4CMBOTGZ.js} +2 -2
  155. package/client-dist/session.module-V4SRPQRZ.js +12 -0
  156. package/client-dist/session.module-V4SRPQRZ.js.map +7 -0
  157. package/client-dist/{set.module-XHJR4XUD.js → set.module-32SVEWTG.js} +5 -5
  158. package/client-dist/{set.module-XHJR4XUD.js.map → set.module-32SVEWTG.js.map} +3 -3
  159. package/client-dist/{setup.module-RRQZ62B2.js → setup.module-5T6MCMR4.js} +2 -2
  160. package/client-dist/styles-CTUT42AQ.css +2 -0
  161. package/client-dist/styles-CTUT42AQ.css.map +7 -0
  162. package/client-dist/{terminals.module-QKIQS6FH.js → terminals.module-AQO2TVO2.js} +2 -2
  163. package/client-dist/{voice-notes-poc.module-K3FB6OIB.js → voice-notes-poc.module-EI2HY7YJ.js} +2 -2
  164. package/client-dist/{wfs.module-JVR53PGJ.js → wfs.module-AHRZE5WB.js} +2 -2
  165. package/package.json +1 -1
  166. package/server/build/src/_collections/core/ccap-post-services-bootstrap.util.d.ts.map +1 -1
  167. package/server/build/src/_collections/core/ccap-post-services-bootstrap.util.js +5 -0
  168. package/server/build/src/_collections/core/ccap-post-services-bootstrap.util.js.map +1 -1
  169. package/server/build/src/_modules/ccap-agent/_modules/agent-core/_modules/run/_services/control-services/run-flow.control-service.d.ts.map +1 -1
  170. package/server/build/src/_modules/ccap-agent/_modules/agent-core/_modules/run/_services/control-services/run-flow.control-service.js +8 -1
  171. package/server/build/src/_modules/ccap-agent/_modules/agent-core/_modules/run/_services/control-services/run-flow.control-service.js.map +1 -1
  172. package/server/build/src/_modules/ccap-agent/_modules/error-handling/_collections/error-handling-stats-range.const.d.ts +11 -0
  173. package/server/build/src/_modules/ccap-agent/_modules/error-handling/_collections/error-handling-stats-range.const.d.ts.map +1 -0
  174. package/server/build/src/_modules/ccap-agent/_modules/error-handling/_collections/error-handling-stats-range.const.js +20 -0
  175. package/server/build/src/_modules/ccap-agent/_modules/error-handling/_collections/error-handling-stats-range.const.js.map +1 -0
  176. package/server/build/src/_modules/ccap-agent/_modules/error-handling/_collections/utils/error-handling-stats.util.d.ts +65 -0
  177. package/server/build/src/_modules/ccap-agent/_modules/error-handling/_collections/utils/error-handling-stats.util.d.ts.map +1 -0
  178. package/server/build/src/_modules/ccap-agent/_modules/error-handling/_collections/utils/error-handling-stats.util.js +222 -0
  179. package/server/build/src/_modules/ccap-agent/_modules/error-handling/_collections/utils/error-handling-stats.util.js.map +1 -0
  180. package/server/build/src/_modules/ccap-agent/_modules/error-handling/_collections/utils/error-handling-stats.util.spec.d.ts +7 -0
  181. package/server/build/src/_modules/ccap-agent/_modules/error-handling/_collections/utils/error-handling-stats.util.spec.d.ts.map +1 -0
  182. package/server/build/src/_modules/ccap-agent/_modules/error-handling/_collections/utils/error-handling-stats.util.spec.js +213 -0
  183. package/server/build/src/_modules/ccap-agent/_modules/error-handling/_collections/utils/error-handling-stats.util.spec.js.map +1 -0
  184. package/server/build/src/_modules/ccap-agent/_modules/error-handling/_models/interfaces/error-handling-stats.interface.d.ts +58 -0
  185. package/server/build/src/_modules/ccap-agent/_modules/error-handling/_models/interfaces/error-handling-stats.interface.d.ts.map +1 -0
  186. package/server/build/src/_modules/ccap-agent/_modules/error-handling/_models/interfaces/error-handling-stats.interface.js +3 -0
  187. package/server/build/src/_modules/ccap-agent/_modules/error-handling/_models/interfaces/error-handling-stats.interface.js.map +1 -0
  188. package/server/build/src/_modules/ccap-agent/_modules/error-handling/_routes/error-handling.controller.d.ts.map +1 -1
  189. package/server/build/src/_modules/ccap-agent/_modules/error-handling/_routes/error-handling.controller.js +14 -0
  190. package/server/build/src/_modules/ccap-agent/_modules/error-handling/_routes/error-handling.controller.js.map +1 -1
  191. package/server/build/src/_modules/ccap-agent/_modules/error-handling/_services/errorhandling-stats.control-service.d.ts +35 -0
  192. package/server/build/src/_modules/ccap-agent/_modules/error-handling/_services/errorhandling-stats.control-service.d.ts.map +1 -0
  193. package/server/build/src/_modules/ccap-agent/_modules/error-handling/_services/errorhandling-stats.control-service.js +80 -0
  194. package/server/build/src/_modules/ccap-agent/_modules/error-handling/_services/errorhandling-stats.control-service.js.map +1 -0
  195. package/server/build/src/_modules/ccap-agent/_modules/integrations/_modules/voice/_collections/utils/voc-mp3-id3-strip.util.d.ts +47 -0
  196. package/server/build/src/_modules/ccap-agent/_modules/integrations/_modules/voice/_collections/utils/voc-mp3-id3-strip.util.d.ts.map +1 -0
  197. package/server/build/src/_modules/ccap-agent/_modules/integrations/_modules/voice/_collections/utils/voc-mp3-id3-strip.util.js +100 -0
  198. package/server/build/src/_modules/ccap-agent/_modules/integrations/_modules/voice/_collections/utils/voc-mp3-id3-strip.util.js.map +1 -0
  199. package/server/build/src/_modules/ccap-agent/_modules/integrations/_modules/voice/_collections/utils/voc-mp3-id3-strip.util.spec.d.ts +2 -0
  200. package/server/build/src/_modules/ccap-agent/_modules/integrations/_modules/voice/_collections/utils/voc-mp3-id3-strip.util.spec.d.ts.map +1 -0
  201. package/server/build/src/_modules/ccap-agent/_modules/integrations/_modules/voice/_collections/utils/voc-mp3-id3-strip.util.spec.js +162 -0
  202. package/server/build/src/_modules/ccap-agent/_modules/integrations/_modules/voice/_collections/utils/voc-mp3-id3-strip.util.spec.js.map +1 -0
  203. package/server/build/src/_modules/ccap-agent/_modules/integrations/_modules/voice/_services/control-services/stt/voc-transcribe.control-service.d.ts +2 -0
  204. package/server/build/src/_modules/ccap-agent/_modules/integrations/_modules/voice/_services/control-services/stt/voc-transcribe.control-service.d.ts.map +1 -1
  205. package/server/build/src/_modules/ccap-agent/_modules/integrations/_modules/voice/_services/control-services/stt/voc-transcribe.control-service.js +16 -0
  206. package/server/build/src/_modules/ccap-agent/_modules/integrations/_modules/voice/_services/control-services/stt/voc-transcribe.control-service.js.map +1 -1
  207. package/server/build/src/_modules/ccap-agent/_modules/integrations/_modules/voice/_services/control-services/tts/voc-tts.control-service.d.ts.map +1 -1
  208. package/server/build/src/_modules/ccap-agent/_modules/integrations/_modules/voice/_services/control-services/tts/voc-tts.control-service.js +22 -4
  209. package/server/build/src/_modules/ccap-agent/_modules/integrations/_modules/voice/_services/control-services/tts/voc-tts.control-service.js.map +1 -1
  210. package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/consts/cc-kill-reasons.const.d.ts +58 -0
  211. package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/consts/cc-kill-reasons.const.d.ts.map +1 -1
  212. package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/consts/cc-kill-reasons.const.js +64 -0
  213. package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/consts/cc-kill-reasons.const.js.map +1 -1
  214. package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/cc-list-item-serialize.util.d.ts.map +1 -1
  215. package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/cc-list-item-serialize.util.js +3 -0
  216. package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/cc-list-item-serialize.util.js.map +1 -1
  217. package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/cc-stream-parser.util.d.ts +17 -0
  218. package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/cc-stream-parser.util.d.ts.map +1 -1
  219. package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/cc-stream-parser.util.js +65 -5
  220. package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/cc-stream-parser.util.js.map +1 -1
  221. package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/cc-stream-parser.util.spec.d.ts +9 -0
  222. package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/cc-stream-parser.util.spec.d.ts.map +1 -0
  223. package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/cc-stream-parser.util.spec.js +213 -0
  224. package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/cc-stream-parser.util.spec.js.map +1 -0
  225. package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/lifecycle/cc-exit-diagnostics.util.d.ts +47 -0
  226. package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/lifecycle/cc-exit-diagnostics.util.d.ts.map +1 -0
  227. package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/lifecycle/cc-exit-diagnostics.util.js +71 -0
  228. package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/lifecycle/cc-exit-diagnostics.util.js.map +1 -0
  229. package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/lifecycle/cc-process-exit.util.d.ts +36 -0
  230. package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/lifecycle/cc-process-exit.util.d.ts.map +1 -1
  231. package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/lifecycle/cc-process-exit.util.js +93 -6
  232. package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/lifecycle/cc-process-exit.util.js.map +1 -1
  233. package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/lifecycle/cc-process-exit.util.spec.js +85 -21
  234. package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/lifecycle/cc-process-exit.util.spec.js.map +1 -1
  235. package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/lifecycle/cc-recovery.util.d.ts.map +1 -1
  236. package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/lifecycle/cc-recovery.util.js +81 -1
  237. package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/lifecycle/cc-recovery.util.js.map +1 -1
  238. package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/terminal/cc-terminal-session-closed-guard.util.d.ts.map +1 -1
  239. package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/terminal/cc-terminal-session-closed-guard.util.js +14 -2
  240. package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/terminal/cc-terminal-session-closed-guard.util.js.map +1 -1
  241. package/server/build/src/_modules/external-sessions/_modules/claude-code/_routes/claude-code.controller.d.ts.map +1 -1
  242. package/server/build/src/_modules/external-sessions/_modules/claude-code/_routes/claude-code.controller.js +19 -0
  243. package/server/build/src/_modules/external-sessions/_modules/claude-code/_routes/claude-code.controller.js.map +1 -1
  244. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/blocked-resume/cc-blocked-resume.control-service.d.ts +4 -0
  245. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/blocked-resume/cc-blocked-resume.control-service.d.ts.map +1 -1
  246. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/blocked-resume/cc-blocked-resume.control-service.js +6 -0
  247. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/blocked-resume/cc-blocked-resume.control-service.js.map +1 -1
  248. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-adapter.control-service.d.ts +13 -0
  249. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-adapter.control-service.d.ts.map +1 -1
  250. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-adapter.control-service.js +21 -0
  251. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-adapter.control-service.js.map +1 -1
  252. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-adapter.interface.d.ts +33 -0
  253. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-adapter.interface.d.ts.map +1 -1
  254. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-event.data-service.d.ts.map +1 -1
  255. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-event.data-service.js +10 -3
  256. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-event.data-service.js.map +1 -1
  257. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-manager.control-service.d.ts +54 -0
  258. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-manager.control-service.d.ts.map +1 -1
  259. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-manager.control-service.js +163 -75
  260. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-manager.control-service.js.map +1 -1
  261. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-monitoring.control-service.d.ts +6 -1
  262. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-monitoring.control-service.d.ts.map +1 -1
  263. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-monitoring.control-service.js +32 -9
  264. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-monitoring.control-service.js.map +1 -1
  265. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-monitoring.control-service.spec.js +20 -2
  266. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-monitoring.control-service.spec.js.map +1 -1
  267. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-route.control-service.d.ts +25 -0
  268. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-route.control-service.d.ts.map +1 -1
  269. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-route.control-service.js +301 -1
  270. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-route.control-service.js.map +1 -1
  271. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/status/cc-status-transition.control-service.d.ts +20 -3
  272. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/status/cc-status-transition.control-service.d.ts.map +1 -1
  273. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/status/cc-status-transition.control-service.js +62 -7
  274. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/status/cc-status-transition.control-service.js.map +1 -1
  275. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/status/cc-status-transition.control-service.spec.js +10 -0
  276. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/status/cc-status-transition.control-service.spec.js.map +1 -1
  277. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/terminal/cc-adapter-terminal.control-service.d.ts +11 -18
  278. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/terminal/cc-adapter-terminal.control-service.d.ts.map +1 -1
  279. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/terminal/cc-adapter-terminal.control-service.js +40 -48
  280. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/terminal/cc-adapter-terminal.control-service.js.map +1 -1
  281. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/terminal/cc-terminal-lifecycle.control-service.d.ts +8 -0
  282. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/terminal/cc-terminal-lifecycle.control-service.d.ts.map +1 -1
  283. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/terminal/cc-terminal-lifecycle.control-service.js +13 -2
  284. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/terminal/cc-terminal-lifecycle.control-service.js.map +1 -1
  285. package/server/build/src/_modules/external-sessions/_modules/openclaw/_services/core/oc-event.data-service.d.ts.map +1 -1
  286. package/server/build/src/_modules/external-sessions/_modules/openclaw/_services/core/oc-event.data-service.js +8 -3
  287. package/server/build/src/_modules/external-sessions/_modules/openclaw/_services/core/oc-event.data-service.js.map +1 -1
  288. package/server/build/src/_modules/messaging/_services/control-services/providers/msg-client-socket-server.service.d.ts.map +1 -1
  289. package/server/build/src/_modules/messaging/_services/control-services/providers/msg-client-socket-server.service.js +12 -0
  290. package/server/build/src/_modules/messaging/_services/control-services/providers/msg-client-socket-server.service.js.map +1 -1
  291. package/server/build/src/_modules/notification/_collections/utils/ntf-system-event.util.d.ts +10 -0
  292. package/server/build/src/_modules/notification/_collections/utils/ntf-system-event.util.d.ts.map +1 -1
  293. package/server/build/src/_modules/notification/_collections/utils/ntf-system-event.util.js +18 -0
  294. package/server/build/src/_modules/notification/_collections/utils/ntf-system-event.util.js.map +1 -1
  295. package/server/build/src/_modules/notification/_collections/utils/ntf-system-event.util.spec.js +32 -3
  296. package/server/build/src/_modules/notification/_collections/utils/ntf-system-event.util.spec.js.map +1 -1
  297. package/server/build/src/_modules/peer-instance/_collections/utils/pei-error-recording.util.d.ts +42 -0
  298. package/server/build/src/_modules/peer-instance/_collections/utils/pei-error-recording.util.d.ts.map +1 -0
  299. package/server/build/src/_modules/peer-instance/_collections/utils/pei-error-recording.util.js +73 -0
  300. package/server/build/src/_modules/peer-instance/_collections/utils/pei-error-recording.util.js.map +1 -0
  301. package/server/build/src/_modules/peer-instance/_collections/utils/pei-error-recording.util.spec.d.ts +10 -0
  302. package/server/build/src/_modules/peer-instance/_collections/utils/pei-error-recording.util.spec.d.ts.map +1 -0
  303. package/server/build/src/_modules/peer-instance/_collections/utils/pei-error-recording.util.spec.js +89 -0
  304. package/server/build/src/_modules/peer-instance/_collections/utils/pei-error-recording.util.spec.js.map +1 -0
  305. package/server/build/src/_modules/peer-instance/_models/interfaces/pei-bootstrap-attempt.interface.d.ts +8 -1
  306. package/server/build/src/_modules/peer-instance/_models/interfaces/pei-bootstrap-attempt.interface.d.ts.map +1 -1
  307. package/server/build/src/_modules/peer-instance/_services/pei-bootstrap-watchdog.spec.d.ts +10 -0
  308. package/server/build/src/_modules/peer-instance/_services/pei-bootstrap-watchdog.spec.d.ts.map +1 -0
  309. package/server/build/src/_modules/peer-instance/_services/pei-bootstrap-watchdog.spec.js +74 -0
  310. package/server/build/src/_modules/peer-instance/_services/pei-bootstrap-watchdog.spec.js.map +1 -0
  311. package/server/build/src/_modules/peer-instance/_services/pei-bootstrap.control-service.d.ts +37 -0
  312. package/server/build/src/_modules/peer-instance/_services/pei-bootstrap.control-service.d.ts.map +1 -1
  313. package/server/build/src/_modules/peer-instance/_services/pei-bootstrap.control-service.js +117 -0
  314. package/server/build/src/_modules/peer-instance/_services/pei-bootstrap.control-service.js.map +1 -1
  315. package/server/build/src/_modules/peer-instance/_services/pei-dispatch.control-service.d.ts +11 -0
  316. package/server/build/src/_modules/peer-instance/_services/pei-dispatch.control-service.d.ts.map +1 -1
  317. package/server/build/src/_modules/peer-instance/_services/pei-dispatch.control-service.js +11 -1
  318. package/server/build/src/_modules/peer-instance/_services/pei-dispatch.control-service.js.map +1 -1
  319. package/server/build/src/_modules/peer-instance/_services/pei-dispatch.control-service.spec.js +65 -0
  320. package/server/build/src/_modules/peer-instance/_services/pei-dispatch.control-service.spec.js.map +1 -1
  321. package/server/build/src/_modules/peer-instance/_services/pei-event-relay.control-service.spec.d.ts +15 -0
  322. package/server/build/src/_modules/peer-instance/_services/pei-event-relay.control-service.spec.d.ts.map +1 -0
  323. package/server/build/src/_modules/peer-instance/_services/pei-event-relay.control-service.spec.js +122 -0
  324. package/server/build/src/_modules/peer-instance/_services/pei-event-relay.control-service.spec.js.map +1 -0
  325. package/server/build/src/_modules/peer-instance/_services/pei-heartbeat.control-service.d.ts.map +1 -1
  326. package/server/build/src/_modules/peer-instance/_services/pei-heartbeat.control-service.js +24 -0
  327. package/server/build/src/_modules/peer-instance/_services/pei-heartbeat.control-service.js.map +1 -1
  328. package/server/build/src/_modules/peer-instance/_services/pei-ws-client.control-service.d.ts +30 -0
  329. package/server/build/src/_modules/peer-instance/_services/pei-ws-client.control-service.d.ts.map +1 -1
  330. package/server/build/src/_modules/peer-instance/_services/pei-ws-client.control-service.js +91 -2
  331. package/server/build/src/_modules/peer-instance/_services/pei-ws-client.control-service.js.map +1 -1
  332. package/server/build/src/_modules/peer-instance/_services/pei-ws-server.control-service.d.ts.map +1 -1
  333. package/server/build/src/_modules/peer-instance/_services/pei-ws-server.control-service.js +10 -0
  334. package/server/build/src/_modules/peer-instance/_services/pei-ws-server.control-service.js.map +1 -1
  335. package/server/build/src/_modules/scheduler/_collections/utils/sch-jitter.util.spec.js +4 -2
  336. package/server/build/src/_modules/scheduler/_collections/utils/sch-jitter.util.spec.js.map +1 -1
  337. package/server/build/src/_modules/setup-config/_models/interfaces/cluster/sc-cluster-diagnostics-result.interface.d.ts +9 -0
  338. package/server/build/src/_modules/setup-config/_models/interfaces/cluster/sc-cluster-diagnostics-result.interface.d.ts.map +1 -1
  339. package/server/build/src/_modules/setup-config/_services/control-services/sc-cluster.control-service.d.ts.map +1 -1
  340. package/server/build/src/_modules/setup-config/_services/control-services/sc-cluster.control-service.js +1 -0
  341. package/server/build/src/_modules/setup-config/_services/control-services/sc-cluster.control-service.js.map +1 -1
  342. package/client-dist/ca.module-MVE3OLDD.js +0 -5
  343. package/client-dist/cc-usage-dashboard.component-F7S4MG67.js +0 -2
  344. package/client-dist/cc-usage-dashboard.component-F7S4MG67.js.map +0 -7
  345. package/client-dist/cc.module-GOXYWYW2.js +0 -4
  346. package/client-dist/cc.module-GOXYWYW2.js.map +0 -7
  347. package/client-dist/chunk-4GPIIB3D.js +0 -2
  348. package/client-dist/chunk-4GPIIB3D.js.map +0 -7
  349. package/client-dist/chunk-EGRHWZRV.js +0 -1
  350. package/client-dist/chunk-EGRHWZRV.js.map +0 -7
  351. package/client-dist/chunk-GZDOO5NB.js +0 -2
  352. package/client-dist/chunk-GZDOO5NB.js.map +0 -7
  353. package/client-dist/chunk-IINV7GMO.js.map +0 -7
  354. package/client-dist/chunk-KYVIZZWW.js.map +0 -7
  355. package/client-dist/chunk-MZLFEWAN.js +0 -2
  356. package/client-dist/chunk-MZLFEWAN.js.map +0 -7
  357. package/client-dist/chunk-QPEW5PI4.js +0 -2
  358. package/client-dist/chunk-QPEW5PI4.js.map +0 -7
  359. package/client-dist/consultant.module-WUUVSVHL.js +0 -3
  360. package/client-dist/err.module-B666YXQT.js +0 -6
  361. package/client-dist/err.module-B666YXQT.js.map +0 -7
  362. package/client-dist/oc.module-CDGBJ6I4.js +0 -3
  363. package/client-dist/orc.module-5S7GBE4E.js +0 -2
  364. package/client-dist/orc.module-5S7GBE4E.js.map +0 -7
  365. package/client-dist/project-source-routed.module-FDCQCUUB.js +0 -2
  366. package/client-dist/session.module-AKETH5O2.js +0 -12
  367. package/client-dist/session.module-AKETH5O2.js.map +0 -7
  368. package/client-dist/styles-KHQAHCL5.css +0 -2
  369. package/client-dist/styles-KHQAHCL5.css.map +0 -7
  370. /package/client-dist/{agent-instances.module-V7DKSWVC.js.map → agent-instances.module-4ADMPXCV.js.map} +0 -0
  371. /package/client-dist/{chunk-CRYF37M7.js.map → chunk-3HJWN4W6.js.map} +0 -0
  372. /package/client-dist/{chunk-D2UUXA6L.js.map → chunk-4EV32FFZ.js.map} +0 -0
  373. /package/client-dist/{chunk-AX7QIINI.js.map → chunk-4H3E32UH.js.map} +0 -0
  374. /package/client-dist/{chunk-OUBNMT7L.js.map → chunk-5NW5UGVZ.js.map} +0 -0
  375. /package/client-dist/{chunk-HLNT234H.js.map → chunk-AM5URSKV.js.map} +0 -0
  376. /package/client-dist/{chunk-SYCUR4MY.js.map → chunk-AMROWQBM.js.map} +0 -0
  377. /package/client-dist/{chunk-PTCJL62W.js.map → chunk-AR6EOT63.js.map} +0 -0
  378. /package/client-dist/{chunk-OLK5MJ4J.js.map → chunk-B25EGDHU.js.map} +0 -0
  379. /package/client-dist/{chunk-4SFV57IQ.js.map → chunk-BQTJHETS.js.map} +0 -0
  380. /package/client-dist/{chunk-XTUQJ3W6.js.map → chunk-COOWEMEW.js.map} +0 -0
  381. /package/client-dist/{chunk-TOFOK5W7.js.map → chunk-E3JXFFHE.js.map} +0 -0
  382. /package/client-dist/{chunk-OQW6FXRJ.js.map → chunk-ESIGVRCK.js.map} +0 -0
  383. /package/client-dist/{chunk-JMZKJLUE.js.map → chunk-EVMDNGBK.js.map} +0 -0
  384. /package/client-dist/{chunk-6GSTJE3R.js.map → chunk-F6VMAVI5.js.map} +0 -0
  385. /package/client-dist/{chunk-VO5ZLOZM.js.map → chunk-GBOES7QW.js.map} +0 -0
  386. /package/client-dist/{chunk-2OAF6FCL.js.map → chunk-GTERKRTR.js.map} +0 -0
  387. /package/client-dist/{chunk-7X22BWF7.js.map → chunk-HD4CODAD.js.map} +0 -0
  388. /package/client-dist/{chunk-2EMFCVYO.js.map → chunk-I3FSMGMK.js.map} +0 -0
  389. /package/client-dist/{chunk-VGTXKD6D.js.map → chunk-IFYHOOVA.js.map} +0 -0
  390. /package/client-dist/{chunk-PFBJ7ZHP.js.map → chunk-IVLMVAVJ.js.map} +0 -0
  391. /package/client-dist/{chunk-3D32XY5M.js.map → chunk-KIKSSJKL.js.map} +0 -0
  392. /package/client-dist/{chunk-U2EBQMSE.js.map → chunk-LPNQ5PRN.js.map} +0 -0
  393. /package/client-dist/{chunk-4JKJRGJX.js.map → chunk-MO37SUK2.js.map} +0 -0
  394. /package/client-dist/{chunk-BC7H7K5F.js.map → chunk-MYVEHPA7.js.map} +0 -0
  395. /package/client-dist/{chunk-JEHOIN7Y.js.map → chunk-N55GOFVU.js.map} +0 -0
  396. /package/client-dist/{chunk-R5WCLLO5.js.map → chunk-NNUHTCXG.js.map} +0 -0
  397. /package/client-dist/{chunk-TP2634XD.js.map → chunk-OKTAADTQ.js.map} +0 -0
  398. /package/client-dist/{chunk-DURLBTAJ.js.map → chunk-ONS7XQYD.js.map} +0 -0
  399. /package/client-dist/{chunk-PG7CJVEP.js.map → chunk-PZN2OI7U.js.map} +0 -0
  400. /package/client-dist/{chunk-C4JDDOQR.js.map → chunk-QUD3BEHN.js.map} +0 -0
  401. /package/client-dist/{chunk-DJVWZQNB.js.map → chunk-QUEYZI42.js.map} +0 -0
  402. /package/client-dist/{chunk-3TMVRWAB.js.map → chunk-RAHCHCWR.js.map} +0 -0
  403. /package/client-dist/{chunk-SQWHJTFE.js.map → chunk-RCCUSGIN.js.map} +0 -0
  404. /package/client-dist/{chunk-GADEZIXI.js.map → chunk-RL5LPTPO.js.map} +0 -0
  405. /package/client-dist/{chunk-5C3KCWYF.js.map → chunk-SDVXPGB7.js.map} +0 -0
  406. /package/client-dist/{chunk-CLQC45GB.js.map → chunk-TNLHQRL7.js.map} +0 -0
  407. /package/client-dist/{chunk-JZHYGU3K.js.map → chunk-TWK7BOB7.js.map} +0 -0
  408. /package/client-dist/{chunk-ILG5WENK.js.map → chunk-U62YECNK.js.map} +0 -0
  409. /package/client-dist/{chunk-RSPVPEQ4.js.map → chunk-UOC6UYZT.js.map} +0 -0
  410. /package/client-dist/{chunk-AI7WKHRQ.js.map → chunk-VDQROW6J.js.map} +0 -0
  411. /package/client-dist/{chunk-3PA6BJES.js.map → chunk-VMXIXZV2.js.map} +0 -0
  412. /package/client-dist/{chunk-CFHQS3UB.js.map → chunk-WRI37SX4.js.map} +0 -0
  413. /package/client-dist/{chunk-MS5OG7JD.js.map → chunk-XLSL262Q.js.map} +0 -0
  414. /package/client-dist/{chunk-3PLWSRB4.js.map → chunk-YN4H6MW2.js.map} +0 -0
  415. /package/client-dist/{chunk-OEEQNIJG.js.map → chunk-Z5FUR5ZW.js.map} +0 -0
  416. /package/client-dist/{chunk-MY75XBDH.js.map → chunk-ZCHMBEHT.js.map} +0 -0
  417. /package/client-dist/{chunk-LIQPVSH3.js.map → chunk-ZPJ6KYMA.js.map} +0 -0
  418. /package/client-dist/{crd.module-IRGVOYD5.js.map → crd.module-2I2BDC3A.js.map} +0 -0
  419. /package/client-dist/{dashboard.module-NPPSZHO6.js.map → dashboard.module-X2A6LOTA.js.map} +0 -0
  420. /package/client-dist/{do.module-GKQTJOXR.js.map → do.module-CJWEKZ4L.js.map} +0 -0
  421. /package/client-dist/{document-library.module-JK3K7QNJ.js.map → document-library.module-WJSFZPA7.js.map} +0 -0
  422. /package/client-dist/{embedding-eval.module-LVESAMPN.js.map → embedding-eval.module-FOALIAQW.js.map} +0 -0
  423. /package/client-dist/{embedding-registry.module-3ECACZZ3.js.map → embedding-registry.module-SS646R4H.js.map} +0 -0
  424. /package/client-dist/{feedback.module-AHG7462C.js.map → feedback.module-T3MZQKXV.js.map} +0 -0
  425. /package/client-dist/{host-runtime-mcp.module-XFUI7B65.js.map → host-runtime-mcp.module-FBZZGQGD.js.map} +0 -0
  426. /package/client-dist/{live-dev-pipeline.module-OMK67DGM.js.map → live-dev-pipeline.module-OKQYFSJL.js.map} +0 -0
  427. /package/client-dist/{logs.module-FWACECVV.js.map → logs.module-SHHOD5XW.js.map} +0 -0
  428. /package/client-dist/{master-control-remote-poc.module-GQ6RMPRB.js.map → master-control-remote-poc.module-ITXHYU5K.js.map} +0 -0
  429. /package/client-dist/{mobile-app.module-YSARX6QC.js.map → mobile-app.module-Q3W3PU4O.js.map} +0 -0
  430. /package/client-dist/{model-registry.module-SJOUSDXZ.js.map → model-registry.module-DGN55LTQ.js.map} +0 -0
  431. /package/client-dist/{project-management.module-LWZLB6VU.js.map → project-management.module-T7NBKKSR.js.map} +0 -0
  432. /package/client-dist/{project-source-routed.module-FDCQCUUB.js.map → project-source-routed.module-YO54LEGN.js.map} +0 -0
  433. /package/client-dist/{scheduler.module-VH647PWD.js.map → scheduler.module-4CMBOTGZ.js.map} +0 -0
  434. /package/client-dist/{setup.module-RRQZ62B2.js.map → setup.module-5T6MCMR4.js.map} +0 -0
  435. /package/client-dist/{terminals.module-QKIQS6FH.js.map → terminals.module-AQO2TVO2.js.map} +0 -0
  436. /package/client-dist/{voice-notes-poc.module-K3FB6OIB.js.map → voice-notes-poc.module-EI2HY7YJ.js.map} +0 -0
  437. /package/client-dist/{wfs.module-JVR53PGJ.js.map → wfs.module-AHRZE5WB.js.map} +0 -0
@@ -1,2 +1,2 @@
1
- import{a as R,b as z,c as Ce}from"./chunk-QPEW5PI4.js";import{c as ge}from"./chunk-MZLFEWAN.js";import{a as xe}from"./chunk-FLAJXIYW.js";import{b as le,c as se,f as de,i as ce,n as ue,o as _e,p as me,v as pe}from"./chunk-EO4DNTT4.js";import{a as K}from"./chunk-5UPNU54P.js";import{j as fe}from"./chunk-7SAFEFWU.js";import{C as q,D as Y,Fa as d,Ga as $,Ha as L,Ia as ie,J as f,Ja as oe,K as x,Ka as re,L as A,M as I,Ma as N,Na as W,Oa as O,Q as j,Ta as ae,U as H,Y as ee,Z as l,aa as p,da as C,fa as V,ga as y,ha as G,hb as v,ia as F,k as P,la as g,ma as te,na as ne,oa as B,pa as D,qa as o,ra as r,sa as S,ua as T,va as m,wa as c,y as X}from"./chunk-TBMJSIBB.js";var he="ccap-voiceInput:autoSendAfterVoice",be=(()=>{class n{autoSendAfterVoice_$=p(n.readAutoSendAfterVoiceFromStorage());setAutoSendAfterVoice(e){this.autoSendAfterVoice_$.set(e),K.writeString(he,String(e))}static readAutoSendAfterVoiceFromStorage(){return K.readString(he)==="true"}static \u0275fac=function(t){return new(t||n)};static \u0275prov=X({token:n,factory:n.\u0275fac,providedIn:"root"})}return n})();var k=function(n){return n.equal="equal",n.removed="removed",n.added="added",n}(k||{});var U=class n{static tokenize(s){let e=s;if(e.length===0)return[];let t=e.split(/(\s+)/),i=[];for(let a=0;a<t.length;a++){let u=t[a];u.length>0&&i.push(u)}return i}static mergeAndAssignIds(s){if(s.length===0)return[];let e=[];for(let i=0;i<s.length;i++){let a=s[i],u=e[e.length-1];u!==void 0&&u.kind===a.kind?u.text=u.text+a.text:e.push({kind:a.kind,text:a.text})}let t=[];for(let i=0;i<e.length;i++){let a=e[i];t.push({id:i,kind:a.kind,text:a.text})}return t}static buildWordDiff(s,e){let t=n.tokenize(s),i=n.tokenize(e),a=t.length,u=i.length,_=[];for(let h=0;h<=a;h++){let E=[];for(let Q=0;Q<=u;Q++)E.push(0);_.push(E)}for(let h=1;h<=a;h++)for(let E=1;E<=u;E++)if(t[h-1]===i[E-1])_[h][E]=_[h-1][E-1]+1;else{let Q=_[h-1][E],Z=_[h][E-1];_[h][E]=Q>Z?Q:Z}let w=[],b=a,M=u;for(;b>0||M>0;)b>0&&M>0&&t[b-1]===i[M-1]?(w.push({kind:k.equal,text:t[b-1]}),b-=1,M-=1):M>0&&(b===0||_[b][M-1]>=_[b-1][M])?(w.push({kind:k.added,text:i[M-1]}),M-=1):b>0&&(w.push({kind:k.removed,text:t[b-1]}),b-=1);let J=[];for(let h=w.length-1;h>=0;h--)J.push(w[h]);return n.mergeAndAssignIds(J)}};var Se=(n,s)=>s.value,Ee=(n,s)=>s.id;function ye(n,s){n&1&&S(0,"span",25)}function $e(n,s){if(n&1&&(o(0,"div",28),S(1,"div",33)(2,"div",34),r()),n&2){let e=c(3);l(),G("height",e.volumePercent_$(),"%")}}function we(n,s){if(n&1&&(o(0,"div",26),C(1,$e,3,2,"div",28),A(),o(2,"svg",29),S(3,"path",30)(4,"path",31)(5,"line",32),r()()),n&2){let e=c(2);l(),g(e.isRecordActive_$()?1:-1)}}function Me(n,s){n&1&&(o(0,"p",27)(1,"span",35),d(2,"\u26A0"),r(),d(3),r()),n&2&&(V("aria-live","polite"),l(3),L("",s," "))}function Ae(n,s){if(n&1){let e=T();o(0,"div",0)(1,"div",15)(2,"button",16),m("click",function(i){return f(e),c().toggleSettings(),x(i.stopPropagation())}),A(),o(3,"svg",17),S(4,"path",18)(5,"path",19),r()(),I(),o(6,"button",20),m("click",function(i){return f(e),c().toggleInfo(),x(i.stopPropagation())}),A(),o(7,"svg",17),S(8,"circle",21)(9,"path",22)(10,"path",23),r()()(),I(),o(11,"button",24),m("click",function(){f(e);let i=c();return x(i.toggleRecord())}),C(12,ye,1,0,"span",25)(13,we,6,1,"div",26),r(),C(14,Me,4,2,"p",27),r()}if(n&2){let e,t=c();l(6),F("border-neonDefault",!t.lastQaTextWasModified_$())("text-neonCyan",!t.lastQaTextWasModified_$())("hover:border-neonCyan",!t.lastQaTextWasModified_$())("hover:shadow-neon-glow-cyan",!t.lastQaTextWasModified_$())("focus:ring-neonCyan",!t.lastQaTextWasModified_$())("border-neonAmber",t.lastQaTextWasModified_$())("text-neonAmber",t.lastQaTextWasModified_$())("shadow-neon-glow-orange",t.lastQaTextWasModified_$())("hover:border-neonAmber",t.lastQaTextWasModified_$())("hover:shadow-neon-glow-orange",t.lastQaTextWasModified_$())("focus:ring-neonAmber",t.lastQaTextWasModified_$()),V("aria-label",t.lastQaTextWasModified_$()?"Utols\xF3 QA eredm\xE9ny \u2014 a sz\xF6veg m\xF3dosult":"Utols\xF3 QA eredm\xE9ny")("title",t.lastQaTextWasModified_$()?"Utols\xF3 QA eredm\xE9ny \u2014 a sz\xF6veg m\xF3dosult (r\xE9szletek)":"Utols\xF3 QA eredm\xE9ny"),l(5),F("border-neonCyan",t.isRecordActive_$()||t.busy_$())("shadow-neon-glow-cyan",t.isRecordActive_$()||t.busy_$())("animate-pulse",t.isRecording_$()),y("disabled",t.mediaUnavailable_$()!==null),V("aria-label",t.recordButtonAriaLabel_$())("title",t.recordButtonTitle_$()),l(),g(t.busy_$()&&!t.isRecordActive_$()?12:13),l(2),g((e=t.mediaUnavailable_$())?14:-1,e)}}function Te(n,s){n&1&&S(0,"span",25)}function Pe(n,s){if(n&1&&(o(0,"div",28),S(1,"div",33)(2,"div",34),r()),n&2){let e=c(3);l(),G("height",e.volumePercent_$(),"%")}}function Ve(n,s){if(n&1&&(o(0,"div",26),C(1,Pe,3,2,"div",28),A(),o(2,"svg",29),S(3,"path",30)(4,"path",31)(5,"line",32),r()()),n&2){let e=c(2);l(),g(e.isRecordActive_$()?1:-1)}}function ke(n,s){n&1&&(o(0,"p",39)(1,"span",35),d(2,"\u26A0"),r(),d(3),r()),n&2&&(V("aria-live","polite"),l(3),L("",s," "))}function Re(n,s){if(n&1){let e=T();o(0,"div",36)(1,"button",24),m("click",function(){f(e);let i=c();return x(i.toggleRecord())}),C(2,Te,1,0,"span",25)(3,Ve,6,1,"div",26),r(),o(4,"button",37),m("click",function(i){return f(e),c().toggleSettings(),x(i.stopPropagation())}),A(),o(5,"svg",17),S(6,"path",18)(7,"path",19),r()(),I(),o(8,"button",38),m("click",function(i){return f(e),c().toggleInfo(),x(i.stopPropagation())}),A(),o(9,"svg",17),S(10,"circle",21)(11,"path",22)(12,"path",23),r()()(),C(13,ke,4,2,"p",39)}if(n&2){let e,t=c();l(),F("border-neonCyan",t.isRecordActive_$()||t.busy_$())("shadow-neon-glow-cyan",t.isRecordActive_$()||t.busy_$())("animate-pulse",t.isRecording_$()),y("disabled",t.mediaUnavailable_$()!==null),V("aria-label",t.recordButtonAriaLabel_$())("title",t.recordButtonTitle_$()),l(),g(t.busy_$()&&!t.isRecordActive_$()?2:3),l(6),F("border-neonDefault",!t.lastQaTextWasModified_$())("text-neonCyan",!t.lastQaTextWasModified_$())("hover:border-neonCyan",!t.lastQaTextWasModified_$())("hover:shadow-neon-glow-cyan",!t.lastQaTextWasModified_$())("focus:ring-neonCyan",!t.lastQaTextWasModified_$())("border-neonAmber",t.lastQaTextWasModified_$())("text-neonAmber",t.lastQaTextWasModified_$())("shadow-neon-glow-orange",t.lastQaTextWasModified_$())("hover:border-neonAmber",t.lastQaTextWasModified_$())("hover:shadow-neon-glow-orange",t.lastQaTextWasModified_$())("focus:ring-neonAmber",t.lastQaTextWasModified_$()),V("aria-label",t.lastQaTextWasModified_$()?"Utols\xF3 QA eredm\xE9ny \u2014 a sz\xF6veg m\xF3dosult":"Utols\xF3 QA eredm\xE9ny")("title",t.lastQaTextWasModified_$()?"Utols\xF3 QA eredm\xE9ny \u2014 a sz\xF6veg m\xF3dosult (r\xE9szletek)":"Utols\xF3 QA eredm\xE9ny"),l(5),g((e=t.mediaUnavailable_$())?13:-1,e)}}function Qe(n,s){if(n&1&&(o(0,"p",45),d(1),r()),n&2){let e=c(2);l(),re(" Override: ",e.qaProviderDisplayLabel_$()," / ",e.qaModelName||"\u2014"," (glob\xE1l: ",e.defaultLlmProviderDisplayLabel_$()||"\u2014"," / ",e.defaultLlmModel_$()||"\u2014","). ")}}function qe(n,s){if(n&1&&(o(0,"p",45),d(1),r()),n&2){let e=c(2);l(),ie(" Nincs be\xE1ll\xEDtva \u2013 haszn\xE1lt: ",e.defaultLlmProviderDisplayLabel_$()||"\u2014"," / ",e.defaultLlmModel_$()||"\u2014"," (glob\xE1l). ")}}function Fe(n,s){if(n&1&&(o(0,"option",49),d(1),r()),n&2){let e=s.$implicit;y("value",e.value),l(),$(e.label)}}function Be(n,s){if(n&1&&(o(0,"option",49),d(1),r()),n&2){let e=s.$implicit;y("value",e),l(),$(e)}}function De(n,s){if(n&1){let e=T();o(0,"select",59),O("ngModelChange",function(i){f(e);let a=c(2);return W(a.qaModelName,i)||(a.qaModelName=i),x(i)}),o(1,"option",48),d(2,"\u2014 default \u2014"),r(),B(3,Be,2,2,"option",49,ne),r()}if(n&2){let e=c(2);N("ngModel",e.qaModelName),l(3),D(e.qaModelsForProvider_$())}}function Le(n,s){if(n&1){let e=T();o(0,"input",60),O("ngModelChange",function(i){f(e);let a=c(2);return W(a.qaModelName,i)||(a.qaModelName=i),x(i)}),r()}if(n&2){let e=c(2);N("ngModel",e.qaModelName)}}function Ne(n,s){if(n&1&&(o(0,"p",52),d(1),r()),n&2){let e=c(2);l(),$(e.qaModelsListFetchError_$())}}function We(n,s){if(n&1){let e=T();o(0,"div",15)(1,"input",61),m("input",function(i){let a=f(e).$index,u=c(2);return x(u.updateConfusionFrom(a,i.target.value))}),r(),o(2,"span",62),d(3,"\u2192"),r(),o(4,"input",63),m("input",function(i){let a=f(e).$index,u=c(2);return x(u.updateConfusionTo(a,i.target.value))}),r(),o(5,"button",64),m("click",function(){let i=f(e).$index,a=c(2);return x(a.removeConfusionEntry(i))}),o(6,"span",65),d(7,"T\xF6rl\xE9s"),r(),A(),o(8,"svg",66),S(9,"path",67),r()()()}if(n&2){let e=s.$implicit;l(),y("value",e.from),l(3),y("value",e.to)}}function Oe(n,s){if(n&1){let e=T();o(0,"div",8)(1,"div",40)(2,"p",41),d(3,"System prompt (LLM-nek)"),r(),o(4,"p",42),d(5),r()(),o(6,"div",40)(7,"p",41),d(8," User prompt sablon (ide f\u0171z\u0151dik be a felv\xE9tel adata) "),r(),o(9,"p",43),d(10),r(),o(11,"p",44),d(12),r()(),o(13,"div",40)(14,"p",41),d(15,"STT QA provider \xE9s modell"),r(),C(16,Qe,2,4,"p",45)(17,qe,2,2,"p",45),o(18,"div",46)(19,"select",47),O("ngModelChange",function(i){f(e);let a=c();return W(a.qaProviderName,i)||(a.qaProviderName=i),x(i)}),m("ngModelChange",function(){f(e);let i=c();return x(i.onQaProviderChange())}),o(20,"option",48),d(21,"\u2014 default \u2014"),r(),B(22,Fe,2,2,"option",49,Se),r(),C(24,De,5,1,"select",50)(25,Le,1,1,"input",51),r(),C(26,Ne,2,1,"p",52),r(),o(27,"div",53)(28,"p",54),d(29," Tipikus el\xEDr\xE1sok / tip\xF3k (confusion map) \u2013 ezekre jav\xEDt a QA "),r(),o(30,"div",55),B(31,We,10,2,"div",15,te),r(),o(33,"div",56)(34,"button",57),m("click",function(){f(e);let i=c();return x(i.addConfusionEntry())}),d(35," + Sor hozz\xE1ad\xE1sa "),r(),o(36,"button",58),m("click",function(){f(e);let i=c();return x(i.saveQaSettings())}),d(37),r()()()()}if(n&2){let e=s,t=c();l(5),$(e.systemPrompt),l(5),L(" ",e.userPromptTemplate," "),l(2),oe(" Placeholderek: ","{{TRANSCRIPT}}"," = nyers sz\xF6veg, ","{{NOTE_CONTEXT}}"," = jegyzet, ","{{CONFUSION_MAP}}"," = az al\xE1bbi el\xEDr\xE1s lista JSON-ban. "),l(4),g(t.qaProviderName.trim()?16:17),l(3),N("ngModel",t.qaProviderName),l(3),D(t.llmProviderSelectOptions_$()),l(2),g(t.qaShowModelSelect_$()?24:25),l(2),g(t.qaModelsListFetchError_$().trim()?26:-1),l(5),D(t.confusionMapList_$()),l(5),y("disabled",t.qaSettingsSaving_$()),l(),L(" ",t.qaSettingsSaving_$()?"Ment\xE9s\u2026":"QA be\xE1ll\xEDt\xE1sok ment\xE9se"," ")}}function Ie(n,s){n&1&&(o(0,"p",9),d(1,"QA be\xE1ll\xEDt\xE1sok bet\xF6lt\xE9se\u2026"),r())}function ze(n,s){if(n&1){let e=T();o(0,"p",68),d(1," A QA be\xE1ll\xEDt\xE1sok bet\xF6lt\xE9se sikertelen. "),r(),o(2,"button",69),m("click",function(){f(e);let i=c();return x(i.loadQaSettings())}),d(3," \xDAjra bet\xF6lt\xE9s "),r()}}function Ue(n,s){if(n&1&&(o(0,"span",78),d(1),r()),n&2){let e=c().$implicit;l(),$(e.text)}}function je(n,s){if(n&1&&(o(0,"span",79),d(1),r()),n&2){let e=c().$implicit;l(),$(e.text)}}function He(n,s){if(n&1&&(o(0,"span",80),d(1),r()),n&2){let e=c().$implicit;l(),$(e.text)}}function Ge(n,s){if(n&1&&C(0,Ue,2,1,"span",78)(1,je,2,1,"span",79)(2,He,2,1,"span",80),n&2){let e=s.$implicit,t=c(3);g(e.kind===t.SttQaDiffKind.equal?0:e.kind===t.SttQaDiffKind.removed?1:2)}}function Ke(n,s){if(n&1&&(o(0,"div",70)(1,"p",75),d(2," V\xE1ltoz\xE1sok (kiemelve) "),r(),o(3,"p",76),B(4,Ge,3,1,null,null,Ee),r(),o(6,"p",77),d(7," \xC1th\xFAzva: nyers STT; kiemelve: jav\xEDtott sz\xF6veg. Al\xE1bb a teljes k\xE9t v\xE1ltozat. "),r()()),n&2){let e=c(2);l(4),D(e.lastQaWordDiffSegments_$())}}function Je(n,s){if(n&1&&(o(0,"p",74),d(1,"Magyar\xE1zat:"),r(),o(2,"p",81),d(3),r()),n&2){let e=c();l(3),$(e.explanation)}}function Ze(n,s){if(n&1&&(o(0,"div",13),C(1,Ke,8,0,"div",70),o(2,"p",71),d(3,"Volt m\xF3dos\xEDt\xE1s: igen."),r(),o(4,"p",72),d(5,"Eredeti (nyers STT):"),r(),o(6,"p",73),d(7),r(),o(8,"p",74),d(9,"Jav\xEDtott:"),r(),o(10,"p",73),d(11),r(),C(12,Je,4,1),r()),n&2){let e=s,t=c();l(),g(t.lastQaWordDiffSegments_$().length>0?1:-1),l(6),$(e.original),l(4),$(e.corrected),l(),g(e.explanation?12:-1)}}function Xe(n,s){n&1&&(o(0,"p",14),d(1," M\xE9g nem volt STT QA jav\xEDt\xE1s. "),r())}var vt=(()=>{class n{globalError_CS=q(fe);soundRecorder_CS=q(Ce);voiceSttQaUi_DS=q(ge);voiceInputUi_DS=q(be);qaEnabled=H(void 0);compactLayout=H(!1);transcriptReady=new j;transcriptSegmentReady=new j;busy_$=p(!1);pendingTranscriptionCount=0;emitChain=Promise.resolve();volume_$=p(0);isQaEnabledFromSettings_$=p(!1);settingsOpen_$=p(!1);qaSettings_$=p(null);confusionMapList_$=p([]);qaSettingsSaving_$=p(!1);qaSettingsLoading_$=p(!1);settingsQaEnabled=!1;qaProviderName="";qaModelName="";llmProviderSelectOptions_$=p([]);qaModelsForProvider_$=p([]);qaModelsListFetchError_$=p("");lastQaTransformation_$=p(null);infoOpen_$=p(!1);mediaUnavailable_$=p(null);defaultLlmProvider_$=p("");defaultLlmModel_$=p("");volumePercent_$=v(()=>Math.min(100,this.volume_$()*250));qaShowModelSelect_$=v(()=>this.qaModelsForProvider_$().length>0);lastQaTextWasModified_$=v(()=>{let e=this.lastQaTransformation_$();return e===null?!1:e.original!==e.corrected});lastQaWordDiffSegments_$=v(()=>{let e=this.lastQaTransformation_$();return e===null||e.original===e.corrected?[]:U.buildWordDiff(e.original,e.corrected)});SttQaDiffKind=k;defaultLlmProviderDisplayLabel_$=v(()=>{let e=this.llmProviderSelectOptions_$(),t=this.defaultLlmProvider_$().trim();return t.length?e.find(a=>a.value===t)?.label??t:""});qaProviderDisplayLabel_$=v(()=>{let e=this.qaProviderName.trim();return e.length?this.llmProviderSelectOptions_$().find(a=>a.value===e)?.label??e:""});ngOnInit(){let e=z.getMediaRecordingAvailability();if(!e.supported&&e.reason){let t=e.reason;this.mediaUnavailable_$.set(z.getMediaUnavailableMessage(t)),this.globalError_CS.reportErrorOnly({message:z.getMediaUnavailableReportMessage(t),source:"ccap-voice-record-button"})}this.soundRecorder_CS.setOnChunk((t,i)=>{this.onChunk(t,i)}),this.soundRecorder_CS.setOnVolume(t=>{this.volume_$.set(t)}),this.soundRecorder_CS.setOnError(t=>{this.globalError_CS.showError(t,"ccap-voice-record-button")})}ngOnDestroy(){this.soundRecorder_CS.stopListening()}toggleRecord(){return P(this,null,function*(){if(this.mediaUnavailable_$()!==null)return;if(this.soundRecorder_CS.state_$()===R.stopped){this.qaEnabled()===void 0&&(yield this.loadQaEnabledOnce());try{yield this.soundRecorder_CS.startListening()}catch(t){this.globalError_CS.showError(t,"ccap-voice-record-button")}}else this.soundRecorder_CS.stopListening()})}loadQaEnabledOnce(){return P(this,null,function*(){this.isQaEnabledFromSettings_$.set(yield this.voiceSttQaUi_DS.fetchQaEnabledFlag())})}handleAutoSendAfterVoiceChange(e){this.voiceInputUi_DS.setAutoSendAfterVoice(e)}toggleSettings(){this.settingsOpen_$.update(e=>!e),this.settingsOpen_$()&&this.loadQaSettings()}toggleInfo(){this.infoOpen_$.update(e=>!e)}loadQaSettings(){return P(this,null,function*(){this.qaSettingsLoading_$.set(!0);try{let e=yield this.voiceSttQaUi_DS.loadSttQaSettingsPanelState(),t=e.qa;this.qaSettings_$.set(t),this.confusionMapList_$.set([...t.confusionMap??[]]),this.settingsQaEnabled=t.qaEnabled===!0,this.isQaEnabledFromSettings_$.set(t.qaEnabled===!0),this.qaProviderName=t.providerName??"",this.qaModelName=t.modelName??"",this.llmProviderSelectOptions_$.set(e.llmProviderSelectOptions),this.defaultLlmProvider_$.set(e.defaultLlmProvider),this.defaultLlmModel_$.set(e.defaultLlmModel),this.qaModelsForProvider_$.set(e.qaModelsForProvider),this.qaModelsListFetchError_$.set(e.qaModelsListFetchError)}catch(e){this.globalError_CS.showError(e,"ccap-voice-record-button"),this.qaSettings_$.set(null),this.confusionMapList_$.set([]),this.llmProviderSelectOptions_$.set([]),this.qaModelsListFetchError_$.set(""),this.qaModelsForProvider_$.set([])}finally{this.qaSettingsLoading_$.set(!1)}})}loadQaModelsForProvider(e){return P(this,null,function*(){let t=yield this.voiceSttQaUi_DS.fetchLlmModelsListForSttQa(e);this.qaModelsForProvider_$.set(t.models),this.qaModelsListFetchError_$.set(t.errorMessage)})}onQaProviderChange(){this.loadQaModelsForProvider(this.qaProviderName),this.qaModelName=""}addConfusionEntry(){this.confusionMapList_$.update(e=>[...e,{from:"",to:""}])}removeConfusionEntry(e){this.confusionMapList_$.update(t=>t.filter((i,a)=>a!==e))}updateConfusionFrom(e,t){this.confusionMapList_$.update(i=>{let a=[...i];return a[e]&&(a[e]={from:t,to:a[e].to}),a})}updateConfusionTo(e,t){this.confusionMapList_$.update(i=>{let a=[...i];return a[e]&&(a[e]={from:a[e].from,to:t}),a})}saveQaSettings(){return P(this,null,function*(){this.qaSettingsSaving_$.set(!0);try{let e=this.voiceSttQaUi_DS.normalizeConfusionMapEntries(this.confusionMapList_$());yield this.voiceSttQaUi_DS.saveVoiceNotesQaSettings({confusionMap:e,providerName:this.qaProviderName.trim()||void 0,modelName:this.qaModelName.trim()||void 0,qaEnabled:this.settingsQaEnabled}),this.confusionMapList_$.set([...e]),this.isQaEnabledFromSettings_$.set(this.settingsQaEnabled);let t=this.qaSettings_$();t!==null&&this.qaSettings_$.set({systemPrompt:t.systemPrompt,userPromptTemplate:t.userPromptTemplate,confusionMap:e,providerName:this.qaProviderName.trim()||"",modelName:this.qaModelName.trim()||"",qaEnabled:this.settingsQaEnabled})}catch(e){this.globalError_CS.showError(e,"ccap-voice-record-button")}finally{this.qaSettingsSaving_$.set(!1)}})}onEscape(){this.settingsOpen_$()&&this.settingsOpen_$.set(!1),this.infoOpen_$()&&this.infoOpen_$.set(!1)}effectiveQaEnabled_$=v(()=>this.qaEnabled()!==void 0?this.qaEnabled():this.isQaEnabledFromSettings_$());onChunk(e,t){return P(this,null,function*(){this.pendingTranscriptionCount++,this.busy_$.set(!0);let i=this.emitChain,a=()=>{};this.emitChain=new Promise(u=>{a=u});try{let u=yield this.voiceSttQaUi_DS.transcribeVoiceChunk({blob:e,mimeType:t.mimeType,filename:t.filename,qaEnabled:this.effectiveQaEnabled_$(),noteContext:"",skipClassification:!0});if(yield i,u.ok===!1){this.transcriptSegmentReady.emit({text:"",isFinal:t.isFinal});return}let _=u;if(_.qaFailed===!0){let b=_.qaFailureMessage?.trim()??"";b.length>0&&this.globalError_CS.showError(new Error(b),"voice-stt-qa")}let w=_.correctedTranscript!=null&&_.correctedTranscript.trim().length>0?_.correctedTranscript.trim():(_.transcript??"").trim();_.usedQa===!0&&(_.transcript??"").trim().length>0&&(_.correctedTranscript??"").trim().length>0&&this.lastQaTransformation_$.set({original:(_.transcript??"").trim(),corrected:(_.correctedTranscript??"").trim(),explanation:(_.qaExplanation??"").trim()||void 0,input:_.qaInput}),w&&(this.transcriptReady.emit(w),this.transcriptSegmentReady.emit({text:w,isFinal:t.isFinal}))}catch(u){this.globalError_CS.showError(u,"ccap-voice-record-button")}finally{a(),this.pendingTranscriptionCount--,this.pendingTranscriptionCount<=0&&(this.pendingTranscriptionCount=0,this.busy_$.set(!1))}})}recordStateLabel_$=v(()=>this.soundRecorder_CS.state_$()===R.stopped?"Felv\xE9tel":"Stop");isRecordActive_$=v(()=>{let e=this.soundRecorder_CS.state_$();return e===R.standby||e===R.running});isRecording_$=v(()=>this.soundRecorder_CS.state_$()===R.running);recordButtonAriaLabel_$=v(()=>{let e=this.mediaUnavailable_$();return e||(this.isRecordActive_$()?"Stop":this.busy_$()?"\xDAj felv\xE9tel (feldolgoz\xE1s folyamatban)":"Felv\xE9tel")});recordButtonTitle_$=v(()=>{let e=this.mediaUnavailable_$();return e||(this.isRecordActive_$()?"Stop":this.busy_$()?"\xDAj felv\xE9tel \u2014 el\u0151z\u0151 feldolgoz\xE1s folyamatban":"Felv\xE9tel")});static \u0275fac=function(t){return new(t||n)};static \u0275cmp=Y({type:n,selectors:[["app-ccap-voice-record-button"]],hostBindings:function(t,i){t&1&&m("keydown.escape",function(){return i.onEscape()},!1,ee)},inputs:{qaEnabled:[1,"qaEnabled"],compactLayout:[1,"compactLayout"]},outputs:{transcriptReady:"transcriptReady",transcriptSegmentReady:"transcriptSegmentReady"},standalone:!0,features:[ae],decls:25,vars:14,consts:[[1,"flex","flex-col","items-center","gap-1"],[3,"closed","isOpen","title","maxWidth","zIndex","bodyFlexColumn"],[1,"flex","flex-col","flex-1","min-h-0","w-full","overflow-y-auto","overflow-x-hidden","overscroll-y-contain"],[1,"flex","flex-col","gap-2","shrink-0"],[1,"flex","items-center","gap-2","cursor-pointer","select-none"],["type","checkbox","name","settingsQaEnabled",3,"ngModelChange","ngModel"],[1,"text-sm","text-neutral-300"],["type","checkbox","name","autoSendAfterVoice",3,"ngModelChange","ngModel"],[1,"mt-3","pt-3","border-t","border-neonDefault","flex","flex-col","gap-3","shrink-0"],[1,"mt-3","pt-3","border-t","border-neonDefault","text-xs","text-neutral-400"],["modal-footer","",1,"shrink-0","px-4","py-3","border-t","border-neonDefault"],["type","button",1,"w-full","px-3","py-1.5","text-sm","border","border-neonCyan","rounded","text-neutral-300","hover:shadow-neon-glow-cyan","transition-colors",3,"click"],[3,"closed","isOpen","title","maxWidth","zIndex"],[1,"space-y-2","text-sm"],[1,"text-xs","text-neutral-500"],[1,"flex","items-center","gap-2"],["type","button","aria-label","Be\xE1ll\xEDt\xE1sok","title","Be\xE1ll\xEDt\xE1sok",1,"w-5","h-5","rounded-full","flex","items-center","justify-center","bg-neutral-900","border-2","border-neonDefault","text-neonCyan","hover:border-neonCyan","hover:shadow-neon-glow-cyan","transition-all","duration-200","focus:outline-none","focus:ring-2","focus:ring-neonCyan","focus:ring-offset-2","focus:ring-offset-neutral-900",3,"click"],["viewBox","0 0 24 24","fill","none","stroke","currentColor","stroke-width","2","stroke-linecap","round","stroke-linejoin","round","aria-hidden","true",1,"w-2.5","h-2.5","shrink-0"],["d","M12 15a3 3 0 1 0 0-6 3 3 0 0 0 0 6Z"],["d","M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z"],["type","button",1,"w-5","h-5","rounded-full","flex","items-center","justify-center","bg-neutral-900","border-2","transition-all","duration-200","focus:outline-none","focus:ring-2","focus:ring-offset-2","focus:ring-offset-neutral-900",3,"click"],["cx","12","cy","12","r","10"],["d","M12 16v-4"],["d","M12 8h.01"],["type","button",1,"flex","items-center","justify-center","min-w-[44px]","min-h-[44px]","w-10","h-10","rounded-full","shrink-0","bg-neutral-900","border-2","text-white","transition-all","duration-200","disabled:opacity-50","border-neonDefault","hover:border-neonCyan","hover:shadow-neon-glow-cyan","focus:outline-none","focus:ring-2","focus:ring-neonCyan","focus:ring-offset-2","focus:ring-offset-neutral-900",3,"click","disabled"],["aria-hidden","true",1,"inline-block","w-5","h-5","shrink-0","animate-spin","rounded-full","border-2","border-neonCyan/40","border-t-neonCyan"],[1,"flex","flex-col","items-center","gap-0.5","shrink-0"],[1,"text-[11px]","text-amber-300","leading-tight","max-w-[180px]","text-center"],["aria-hidden","true",1,"relative","w-2","h-6","rounded-sm","bg-neutral-800","overflow-hidden"],["viewBox","0 0 24 24","fill","none","stroke","currentColor","stroke-width","2","stroke-linecap","round","stroke-linejoin","round","aria-hidden","true",1,"w-5","h-5","shrink-0","text-neonCyan"],["d","M12 2a3 3 0 0 1 3 3v7a3 3 0 0 1-6 0V5a3 3 0 0 1 3-3Z"],["d","M19 10v2a7 7 0 0 1-14 0v-2"],["x1","12","y1","19","x2","12","y2","22"],[1,"absolute","inset-x-0","bottom-0","bg-neonCyan","transition-[height]","duration-75"],[1,"absolute","inset-x-0","h-0.5","bg-neonAmber","rounded-sm","z-10",2,"bottom","5%"],["aria-hidden","true",1,"mr-1"],[1,"relative","inline-flex"],["type","button","aria-label","Be\xE1ll\xEDt\xE1sok","title","Be\xE1ll\xEDt\xE1sok",1,"absolute","right-full","mr-4","top-1/2","-translate-y-1/2","w-5","h-5","rounded-full","flex","items-center","justify-center","bg-neutral-900","border-2","border-neonDefault","text-neonCyan","hover:border-neonCyan","hover:shadow-neon-glow-cyan","transition-all","duration-200","focus:outline-none","focus:ring-2","focus:ring-neonCyan","focus:ring-offset-2","focus:ring-offset-neutral-900",3,"click"],["type","button",1,"absolute","left-full","ml-4","top-1/2","-translate-y-1/2","w-5","h-5","rounded-full","flex","items-center","justify-center","bg-neutral-900","border-2","transition-all","duration-200","focus:outline-none","focus:ring-2","focus:ring-offset-2","focus:ring-offset-neutral-900",3,"click"],[1,"text-[11px]","text-amber-300","leading-tight","max-w-[240px]","mt-1"],[1,"shrink-0"],[1,"text-xs","font-medium","text-neutral-400","mb-1"],[1,"text-xs","text-neutral-300","whitespace-pre-wrap","break-words"],[1,"text-xs","text-neutral-300","whitespace-pre-wrap","break-words","font-mono"],[1,"text-[10px]","text-neonAmber","mt-1"],[1,"text-[10px]","text-neutral-500","mb-1"],[1,"flex","flex-wrap","gap-2","items-center"],["name","qaProviderName",1,"px-2","py-1","text-xs","bg-neutral-800","border","border-neonDefault","rounded","text-neutral-200","min-w-[120px]",3,"ngModelChange","ngModel"],["value",""],[3,"value"],["name","qaModelName",1,"px-2","py-1","text-xs","bg-neutral-800","border","border-neonDefault","rounded","text-neutral-200","min-w-[140px]",3,"ngModel"],["type","text","name","qaModelNameText","placeholder","Modell id (lista nem el\xE9rhet\u0151 ehhez a providerhez)",1,"px-2","py-1","text-xs","bg-neutral-800","border","border-neonDefault","rounded","text-neutral-200","min-w-[140px]","font-mono",3,"ngModel"],[1,"text-[10px]","text-amber-300/90","mt-1"],[1,"flex","flex-col","shrink-0"],[1,"text-xs","font-medium","text-neutral-400","mb-1","shrink-0"],[1,"space-y-1.5","rounded","border","border-neonDefault/50","bg-neutral-800/20","p-2"],[1,"flex","flex-wrap","gap-2","items-center","shrink-0","mt-2"],["type","button",1,"px-2","py-1","text-xs","border","border-neonDefault","rounded","text-neutral-400","hover:border-neonCyan","hover:text-neonCyan","transition-colors",3,"click"],["type","button",1,"px-2","py-1","text-xs","border","border-neonCyan","rounded","text-neonCyan","hover:shadow-neon-glow-cyan","disabled:opacity-50","transition-colors",3,"click","disabled"],["name","qaModelName",1,"px-2","py-1","text-xs","bg-neutral-800","border","border-neonDefault","rounded","text-neutral-200","min-w-[140px]",3,"ngModelChange","ngModel"],["type","text","name","qaModelNameText","placeholder","Modell id (lista nem el\xE9rhet\u0151 ehhez a providerhez)",1,"px-2","py-1","text-xs","bg-neutral-800","border","border-neonDefault","rounded","text-neutral-200","min-w-[140px]","font-mono",3,"ngModelChange","ngModel"],["type","text","placeholder","El\xEDr\xE1s / f\xE9lrehall\xE1s",1,"flex-1","min-w-0","px-2","py-1","text-xs","bg-neutral-800","border","border-neonDefault","rounded","text-neutral-200","placeholder-neutral-500",3,"input","value"],[1,"text-neutral-500","shrink-0"],["type","text","placeholder","Helyes forma",1,"flex-1","min-w-0","px-2","py-1","text-xs","bg-neutral-800","border","border-neonDefault","rounded","text-neutral-200","placeholder-neutral-500",3,"input","value"],["type","button","aria-label","Sor t\xF6rl\xE9se","title","Sor t\xF6rl\xE9se",1,"shrink-0","p-1","text-neutral-500","hover:text-neonRed","transition-colors",3,"click"],[1,"sr-only"],["viewBox","0 0 24 24","fill","none","stroke","currentColor","stroke-width","2",1,"w-3.5","h-3.5"],["d","M18 6L6 18M6 6l12 12"],[1,"mt-3","pt-3","border-t","border-neonDefault","text-xs","text-neutral-500"],["type","button",1,"mt-1.5","px-2","py-1","text-xs","border","border-neonDefault","rounded","text-neutral-400","hover:border-neonCyan","hover:text-neonCyan","transition-colors",3,"click"],[1,"rounded-md","border","border-neonAmber/45","bg-neutral-950/95","p-2.5","mb-1"],[1,"font-medium","text-neonAmber"],[1,"text-neutral-400","text-xs"],[1,"text-neutral-200","break-words"],[1,"text-neutral-400","text-xs","mt-2"],[1,"text-[10px]","font-semibold","uppercase","tracking-wide","text-neonAmber/90","mb-1.5"],[1,"text-xs","leading-relaxed","whitespace-pre-wrap","break-words"],[1,"text-[10px]","text-neutral-500","mt-1.5","leading-snug"],[1,"text-neutral-300"],[1,"mx-0.5","inline","rounded","px-0.5","text-red-300/95","line-through","decoration-red-400/85","bg-red-950/50","border","border-red-900/45"],[1,"mx-0.5","inline","rounded","px-0.5","text-neonAmber","bg-amber-950/55","border","border-neonAmber/50","shadow-[0_0_10px_rgb(251_191_36/0.28)]"],[1,"text-neutral-300","break-words"]],template:function(t,i){if(t&1&&(C(0,Ae,15,35,"div",0)(1,Re,14,35),o(2,"app-s-modal",1),m("closed",function(){return i.settingsOpen_$.set(!1)}),o(3,"div",2)(4,"div",3)(5,"label",4)(6,"input",5),O("ngModelChange",function(u){return W(i.settingsQaEnabled,u)||(i.settingsQaEnabled=u),u}),r(),o(7,"span",6),d(8,"STT QA"),r()(),o(9,"label",4)(10,"input",7),m("ngModelChange",function(u){return i.handleAutoSendAfterVoiceChange(u)}),r(),o(11,"span",6),d(12,"Send immediately after voice (Mimik-style)"),r()()(),C(13,Oe,38,11,"div",8)(14,Ie,2,0,"p",9)(15,ze,4,0),r(),o(16,"div",10)(17,"button",11),m("click",function(){return i.settingsOpen_$.set(!1)}),d(18," Bez\xE1r\xE1s "),r()()(),o(19,"app-s-modal",12),m("closed",function(){return i.infoOpen_$.set(!1)}),C(20,Ze,13,4,"div",13)(21,Xe,2,0,"p",14),o(22,"div",10)(23,"button",11),m("click",function(){return i.infoOpen_$.set(!1)}),d(24," Bez\xE1r\xE1s "),r()()()),t&2){let a,u;g(i.compactLayout()?0:1),l(2),y("isOpen",i.settingsOpen_$())("title","Voice Input be\xE1ll\xEDt\xE1sok")("maxWidth","lg")("zIndex","40")("bodyFlexColumn",!0),l(4),N("ngModel",i.settingsQaEnabled),l(4),y("ngModel",i.voiceInputUi_DS.autoSendAfterVoice_$()),l(3),g((a=i.qaSettings_$())?13:i.qaSettingsLoading_$()?14:15,a),l(6),y("isOpen",i.infoOpen_$())("title","Utols\xF3 QA eredm\xE9ny")("maxWidth","md")("zIndex","40"),l(),g((u=i.lastQaTransformation_$())?20:21,u)}},dependencies:[pe,_e,me,se,le,ue,de,ce,xe],encapsulation:2})}return n})();export{be as a,vt as b};
2
- //# sourceMappingURL=chunk-IINV7GMO.js.map
1
+ import{a as R,b as z,c as Ce}from"./chunk-OYB7GU43.js";import{c as ge}from"./chunk-R2IBKJ4K.js";import{a as xe}from"./chunk-FLAJXIYW.js";import{b as le,c as se,f as de,i as ce,n as ue,o as _e,p as me,v as pe}from"./chunk-EO4DNTT4.js";import{a as K}from"./chunk-5UPNU54P.js";import{j as fe}from"./chunk-PVSQ5ZEZ.js";import{C as q,D as Y,Fa as d,Ga as $,Ha as L,Ia as ie,J as f,Ja as oe,K as x,Ka as re,L as A,M as I,Ma as N,Na as W,Oa as O,Q as j,Ta as ae,U as H,Y as ee,Z as l,aa as p,da as C,fa as V,ga as y,ha as G,hb as b,ia as F,k as T,la as g,ma as te,na as ne,oa as B,pa as D,qa as o,ra as r,sa as S,ua as P,va as m,wa as c,y as X}from"./chunk-TBMJSIBB.js";var he="ccap-voiceInput:autoSendAfterVoice",ve=(()=>{class n{autoSendAfterVoice_$=p(n.readAutoSendAfterVoiceFromStorage());setAutoSendAfterVoice(e){this.autoSendAfterVoice_$.set(e),K.writeString(he,String(e))}static readAutoSendAfterVoiceFromStorage(){return K.readString(he)==="true"}static \u0275fac=function(t){return new(t||n)};static \u0275prov=X({token:n,factory:n.\u0275fac,providedIn:"root"})}return n})();var k=function(n){return n.equal="equal",n.removed="removed",n.added="added",n}(k||{});var U=class n{static tokenize(s){let e=s;if(e.length===0)return[];let t=e.split(/(\s+)/),i=[];for(let a=0;a<t.length;a++){let u=t[a];u.length>0&&i.push(u)}return i}static mergeAndAssignIds(s){if(s.length===0)return[];let e=[];for(let i=0;i<s.length;i++){let a=s[i],u=e[e.length-1];u!==void 0&&u.kind===a.kind?u.text=u.text+a.text:e.push({kind:a.kind,text:a.text})}let t=[];for(let i=0;i<e.length;i++){let a=e[i];t.push({id:i,kind:a.kind,text:a.text})}return t}static buildWordDiff(s,e){let t=n.tokenize(s),i=n.tokenize(e),a=t.length,u=i.length,_=[];for(let h=0;h<=a;h++){let E=[];for(let Q=0;Q<=u;Q++)E.push(0);_.push(E)}for(let h=1;h<=a;h++)for(let E=1;E<=u;E++)if(t[h-1]===i[E-1])_[h][E]=_[h-1][E-1]+1;else{let Q=_[h-1][E],Z=_[h][E-1];_[h][E]=Q>Z?Q:Z}let w=[],v=a,M=u;for(;v>0||M>0;)v>0&&M>0&&t[v-1]===i[M-1]?(w.push({kind:k.equal,text:t[v-1]}),v-=1,M-=1):M>0&&(v===0||_[v][M-1]>=_[v-1][M])?(w.push({kind:k.added,text:i[M-1]}),M-=1):v>0&&(w.push({kind:k.removed,text:t[v-1]}),v-=1);let J=[];for(let h=w.length-1;h>=0;h--)J.push(w[h]);return n.mergeAndAssignIds(J)}};var Se=(n,s)=>s.value,Ee=(n,s)=>s.id;function ye(n,s){n&1&&S(0,"span",25)}function $e(n,s){if(n&1&&(o(0,"div",28),S(1,"div",33)(2,"div",34),r()),n&2){let e=c(3);l(),G("height",e.volumePercent_$(),"%")}}function we(n,s){if(n&1&&(o(0,"div",26),C(1,$e,3,2,"div",28),A(),o(2,"svg",29),S(3,"path",30)(4,"path",31)(5,"line",32),r()()),n&2){let e=c(2);l(),g(e.isRecordActive_$()?1:-1)}}function Me(n,s){n&1&&(o(0,"p",27)(1,"span",35),d(2,"\u26A0"),r(),d(3),r()),n&2&&(V("aria-live","polite"),l(3),L("",s," "))}function Ae(n,s){if(n&1){let e=P();o(0,"div",0)(1,"div",15)(2,"button",16),m("click",function(i){return f(e),c().toggleSettings(),x(i.stopPropagation())}),A(),o(3,"svg",17),S(4,"path",18)(5,"path",19),r()(),I(),o(6,"button",20),m("click",function(i){return f(e),c().toggleInfo(),x(i.stopPropagation())}),A(),o(7,"svg",17),S(8,"circle",21)(9,"path",22)(10,"path",23),r()()(),I(),o(11,"button",24),m("click",function(){f(e);let i=c();return x(i.toggleRecord())}),C(12,ye,1,0,"span",25)(13,we,6,1,"div",26),r(),C(14,Me,4,2,"p",27),r()}if(n&2){let e,t=c();l(6),F("border-neonDefault",!t.lastQaTextWasModified_$())("text-neonCyan",!t.lastQaTextWasModified_$())("hover:border-neonCyan",!t.lastQaTextWasModified_$())("hover:shadow-neon-glow-cyan",!t.lastQaTextWasModified_$())("focus:ring-neonCyan",!t.lastQaTextWasModified_$())("border-neonAmber",t.lastQaTextWasModified_$())("text-neonAmber",t.lastQaTextWasModified_$())("shadow-neon-glow-orange",t.lastQaTextWasModified_$())("hover:border-neonAmber",t.lastQaTextWasModified_$())("hover:shadow-neon-glow-orange",t.lastQaTextWasModified_$())("focus:ring-neonAmber",t.lastQaTextWasModified_$()),V("aria-label",t.lastQaTextWasModified_$()?"Utols\xF3 QA eredm\xE9ny \u2014 a sz\xF6veg m\xF3dosult":"Utols\xF3 QA eredm\xE9ny")("title",t.lastQaTextWasModified_$()?"Utols\xF3 QA eredm\xE9ny \u2014 a sz\xF6veg m\xF3dosult (r\xE9szletek)":"Utols\xF3 QA eredm\xE9ny"),l(5),F("border-neonCyan",t.isRecordActive_$()||t.busy_$())("shadow-neon-glow-cyan",t.isRecordActive_$()||t.busy_$())("animate-pulse",t.isRecording_$()),y("disabled",t.mediaUnavailable_$()!==null),V("aria-label",t.recordButtonAriaLabel_$())("title",t.recordButtonTitle_$()),l(),g(t.busy_$()&&!t.isRecordActive_$()?12:13),l(2),g((e=t.mediaUnavailable_$())?14:-1,e)}}function Pe(n,s){n&1&&S(0,"span",25)}function Te(n,s){if(n&1&&(o(0,"div",28),S(1,"div",33)(2,"div",34),r()),n&2){let e=c(3);l(),G("height",e.volumePercent_$(),"%")}}function Ve(n,s){if(n&1&&(o(0,"div",26),C(1,Te,3,2,"div",28),A(),o(2,"svg",29),S(3,"path",30)(4,"path",31)(5,"line",32),r()()),n&2){let e=c(2);l(),g(e.isRecordActive_$()?1:-1)}}function ke(n,s){n&1&&(o(0,"p",39)(1,"span",35),d(2,"\u26A0"),r(),d(3),r()),n&2&&(V("aria-live","polite"),l(3),L("",s," "))}function Re(n,s){if(n&1){let e=P();o(0,"div",36)(1,"button",24),m("click",function(){f(e);let i=c();return x(i.toggleRecord())}),C(2,Pe,1,0,"span",25)(3,Ve,6,1,"div",26),r(),o(4,"button",37),m("click",function(i){return f(e),c().toggleSettings(),x(i.stopPropagation())}),A(),o(5,"svg",17),S(6,"path",18)(7,"path",19),r()(),I(),o(8,"button",38),m("click",function(i){return f(e),c().toggleInfo(),x(i.stopPropagation())}),A(),o(9,"svg",17),S(10,"circle",21)(11,"path",22)(12,"path",23),r()()(),C(13,ke,4,2,"p",39)}if(n&2){let e,t=c();l(),F("border-neonCyan",t.isRecordActive_$()||t.busy_$())("shadow-neon-glow-cyan",t.isRecordActive_$()||t.busy_$())("animate-pulse",t.isRecording_$()),y("disabled",t.mediaUnavailable_$()!==null),V("aria-label",t.recordButtonAriaLabel_$())("title",t.recordButtonTitle_$()),l(),g(t.busy_$()&&!t.isRecordActive_$()?2:3),l(6),F("border-neonDefault",!t.lastQaTextWasModified_$())("text-neonCyan",!t.lastQaTextWasModified_$())("hover:border-neonCyan",!t.lastQaTextWasModified_$())("hover:shadow-neon-glow-cyan",!t.lastQaTextWasModified_$())("focus:ring-neonCyan",!t.lastQaTextWasModified_$())("border-neonAmber",t.lastQaTextWasModified_$())("text-neonAmber",t.lastQaTextWasModified_$())("shadow-neon-glow-orange",t.lastQaTextWasModified_$())("hover:border-neonAmber",t.lastQaTextWasModified_$())("hover:shadow-neon-glow-orange",t.lastQaTextWasModified_$())("focus:ring-neonAmber",t.lastQaTextWasModified_$()),V("aria-label",t.lastQaTextWasModified_$()?"Utols\xF3 QA eredm\xE9ny \u2014 a sz\xF6veg m\xF3dosult":"Utols\xF3 QA eredm\xE9ny")("title",t.lastQaTextWasModified_$()?"Utols\xF3 QA eredm\xE9ny \u2014 a sz\xF6veg m\xF3dosult (r\xE9szletek)":"Utols\xF3 QA eredm\xE9ny"),l(5),g((e=t.mediaUnavailable_$())?13:-1,e)}}function Qe(n,s){if(n&1&&(o(0,"p",45),d(1),r()),n&2){let e=c(2);l(),re(" Override: ",e.qaProviderDisplayLabel_$()," / ",e.qaModelName||"\u2014"," (glob\xE1l: ",e.defaultLlmProviderDisplayLabel_$()||"\u2014"," / ",e.defaultLlmModel_$()||"\u2014","). ")}}function qe(n,s){if(n&1&&(o(0,"p",45),d(1),r()),n&2){let e=c(2);l(),ie(" Nincs be\xE1ll\xEDtva \u2013 haszn\xE1lt: ",e.defaultLlmProviderDisplayLabel_$()||"\u2014"," / ",e.defaultLlmModel_$()||"\u2014"," (glob\xE1l). ")}}function Fe(n,s){if(n&1&&(o(0,"option",49),d(1),r()),n&2){let e=s.$implicit;y("value",e.value),l(),$(e.label)}}function Be(n,s){if(n&1&&(o(0,"option",49),d(1),r()),n&2){let e=s.$implicit;y("value",e),l(),$(e)}}function De(n,s){if(n&1){let e=P();o(0,"select",59),O("ngModelChange",function(i){f(e);let a=c(2);return W(a.qaModelName,i)||(a.qaModelName=i),x(i)}),o(1,"option",48),d(2,"\u2014 default \u2014"),r(),B(3,Be,2,2,"option",49,ne),r()}if(n&2){let e=c(2);N("ngModel",e.qaModelName),l(3),D(e.qaModelsForProvider_$())}}function Le(n,s){if(n&1){let e=P();o(0,"input",60),O("ngModelChange",function(i){f(e);let a=c(2);return W(a.qaModelName,i)||(a.qaModelName=i),x(i)}),r()}if(n&2){let e=c(2);N("ngModel",e.qaModelName)}}function Ne(n,s){if(n&1&&(o(0,"p",52),d(1),r()),n&2){let e=c(2);l(),$(e.qaModelsListFetchError_$())}}function We(n,s){if(n&1){let e=P();o(0,"div",15)(1,"input",61),m("input",function(i){let a=f(e).$index,u=c(2);return x(u.updateConfusionFrom(a,i.target.value))}),r(),o(2,"span",62),d(3,"\u2192"),r(),o(4,"input",63),m("input",function(i){let a=f(e).$index,u=c(2);return x(u.updateConfusionTo(a,i.target.value))}),r(),o(5,"button",64),m("click",function(){let i=f(e).$index,a=c(2);return x(a.removeConfusionEntry(i))}),o(6,"span",65),d(7,"T\xF6rl\xE9s"),r(),A(),o(8,"svg",66),S(9,"path",67),r()()()}if(n&2){let e=s.$implicit;l(),y("value",e.from),l(3),y("value",e.to)}}function Oe(n,s){if(n&1){let e=P();o(0,"div",8)(1,"div",40)(2,"p",41),d(3,"System prompt (LLM-nek)"),r(),o(4,"p",42),d(5),r()(),o(6,"div",40)(7,"p",41),d(8," User prompt sablon (ide f\u0171z\u0151dik be a felv\xE9tel adata) "),r(),o(9,"p",43),d(10),r(),o(11,"p",44),d(12),r()(),o(13,"div",40)(14,"p",41),d(15,"STT QA provider \xE9s modell"),r(),C(16,Qe,2,4,"p",45)(17,qe,2,2,"p",45),o(18,"div",46)(19,"select",47),O("ngModelChange",function(i){f(e);let a=c();return W(a.qaProviderName,i)||(a.qaProviderName=i),x(i)}),m("ngModelChange",function(){f(e);let i=c();return x(i.onQaProviderChange())}),o(20,"option",48),d(21,"\u2014 default \u2014"),r(),B(22,Fe,2,2,"option",49,Se),r(),C(24,De,5,1,"select",50)(25,Le,1,1,"input",51),r(),C(26,Ne,2,1,"p",52),r(),o(27,"div",53)(28,"p",54),d(29," Tipikus el\xEDr\xE1sok / tip\xF3k (confusion map) \u2013 ezekre jav\xEDt a QA "),r(),o(30,"div",55),B(31,We,10,2,"div",15,te),r(),o(33,"div",56)(34,"button",57),m("click",function(){f(e);let i=c();return x(i.addConfusionEntry())}),d(35," + Sor hozz\xE1ad\xE1sa "),r(),o(36,"button",58),m("click",function(){f(e);let i=c();return x(i.saveQaSettings())}),d(37),r()()()()}if(n&2){let e=s,t=c();l(5),$(e.systemPrompt),l(5),L(" ",e.userPromptTemplate," "),l(2),oe(" Placeholderek: ","{{TRANSCRIPT}}"," = nyers sz\xF6veg, ","{{NOTE_CONTEXT}}"," = jegyzet, ","{{CONFUSION_MAP}}"," = az al\xE1bbi el\xEDr\xE1s lista JSON-ban. "),l(4),g(t.qaProviderName.trim()?16:17),l(3),N("ngModel",t.qaProviderName),l(3),D(t.llmProviderSelectOptions_$()),l(2),g(t.qaShowModelSelect_$()?24:25),l(2),g(t.qaModelsListFetchError_$().trim()?26:-1),l(5),D(t.confusionMapList_$()),l(5),y("disabled",t.qaSettingsSaving_$()),l(),L(" ",t.qaSettingsSaving_$()?"Ment\xE9s\u2026":"QA be\xE1ll\xEDt\xE1sok ment\xE9se"," ")}}function Ie(n,s){n&1&&(o(0,"p",9),d(1,"QA be\xE1ll\xEDt\xE1sok bet\xF6lt\xE9se\u2026"),r())}function ze(n,s){if(n&1){let e=P();o(0,"p",68),d(1," A QA be\xE1ll\xEDt\xE1sok bet\xF6lt\xE9se sikertelen. "),r(),o(2,"button",69),m("click",function(){f(e);let i=c();return x(i.loadQaSettings())}),d(3," \xDAjra bet\xF6lt\xE9s "),r()}}function Ue(n,s){if(n&1&&(o(0,"span",78),d(1),r()),n&2){let e=c().$implicit;l(),$(e.text)}}function je(n,s){if(n&1&&(o(0,"span",79),d(1),r()),n&2){let e=c().$implicit;l(),$(e.text)}}function He(n,s){if(n&1&&(o(0,"span",80),d(1),r()),n&2){let e=c().$implicit;l(),$(e.text)}}function Ge(n,s){if(n&1&&C(0,Ue,2,1,"span",78)(1,je,2,1,"span",79)(2,He,2,1,"span",80),n&2){let e=s.$implicit,t=c(3);g(e.kind===t.SttQaDiffKind.equal?0:e.kind===t.SttQaDiffKind.removed?1:2)}}function Ke(n,s){if(n&1&&(o(0,"div",70)(1,"p",75),d(2," V\xE1ltoz\xE1sok (kiemelve) "),r(),o(3,"p",76),B(4,Ge,3,1,null,null,Ee),r(),o(6,"p",77),d(7," \xC1th\xFAzva: nyers STT; kiemelve: jav\xEDtott sz\xF6veg. Al\xE1bb a teljes k\xE9t v\xE1ltozat. "),r()()),n&2){let e=c(2);l(4),D(e.lastQaWordDiffSegments_$())}}function Je(n,s){if(n&1&&(o(0,"p",74),d(1,"Magyar\xE1zat:"),r(),o(2,"p",81),d(3),r()),n&2){let e=c();l(3),$(e.explanation)}}function Ze(n,s){if(n&1&&(o(0,"div",13),C(1,Ke,8,0,"div",70),o(2,"p",71),d(3,"Volt m\xF3dos\xEDt\xE1s: igen."),r(),o(4,"p",72),d(5,"Eredeti (nyers STT):"),r(),o(6,"p",73),d(7),r(),o(8,"p",74),d(9,"Jav\xEDtott:"),r(),o(10,"p",73),d(11),r(),C(12,Je,4,1),r()),n&2){let e=s,t=c();l(),g(t.lastQaWordDiffSegments_$().length>0?1:-1),l(6),$(e.original),l(4),$(e.corrected),l(),g(e.explanation?12:-1)}}function Xe(n,s){n&1&&(o(0,"p",14),d(1," M\xE9g nem volt STT QA jav\xEDt\xE1s. "),r())}var bt=(()=>{class n{globalError_CS=q(fe);soundRecorder_CS=q(Ce);voiceSttQaUi_DS=q(ge);voiceInputUi_DS=q(ve);qaEnabled=H(void 0);compactLayout=H(!1);transcriptReady=new j;transcriptSegmentReady=new j;busy_$=p(!1);pendingTranscriptionCount=0;emitChain=Promise.resolve();volume_$=p(0);isQaEnabledFromSettings_$=p(!1);settingsOpen_$=p(!1);qaSettings_$=p(null);confusionMapList_$=p([]);qaSettingsSaving_$=p(!1);qaSettingsLoading_$=p(!1);settingsQaEnabled=!1;qaProviderName="";qaModelName="";llmProviderSelectOptions_$=p([]);qaModelsForProvider_$=p([]);qaModelsListFetchError_$=p("");lastQaTransformation_$=p(null);infoOpen_$=p(!1);mediaUnavailable_$=p(null);defaultLlmProvider_$=p("");defaultLlmModel_$=p("");volumePercent_$=b(()=>Math.min(100,this.volume_$()*250));qaShowModelSelect_$=b(()=>this.qaModelsForProvider_$().length>0);lastQaTextWasModified_$=b(()=>{let e=this.lastQaTransformation_$();return e===null?!1:e.original!==e.corrected});lastQaWordDiffSegments_$=b(()=>{let e=this.lastQaTransformation_$();return e===null||e.original===e.corrected?[]:U.buildWordDiff(e.original,e.corrected)});SttQaDiffKind=k;defaultLlmProviderDisplayLabel_$=b(()=>{let e=this.llmProviderSelectOptions_$(),t=this.defaultLlmProvider_$().trim();return t.length?e.find(a=>a.value===t)?.label??t:""});qaProviderDisplayLabel_$=b(()=>{let e=this.qaProviderName.trim();return e.length?this.llmProviderSelectOptions_$().find(a=>a.value===e)?.label??e:""});ngOnInit(){let e=z.getMediaRecordingAvailability();if(!e.supported&&e.reason){let t=e.reason;this.mediaUnavailable_$.set(z.getMediaUnavailableMessage(t)),this.globalError_CS.reportErrorOnly({message:z.getMediaUnavailableReportMessage(t),source:"ccap-voice-record-button"})}this.soundRecorder_CS.setOnChunk((t,i)=>{this.onChunk(t,i)}),this.soundRecorder_CS.setOnVolume(t=>{this.volume_$.set(t)}),this.soundRecorder_CS.setOnError(t=>{this.globalError_CS.showError(t,"ccap-voice-record-button")})}ngOnDestroy(){this.soundRecorder_CS.stopListening()}toggleRecord(){return T(this,null,function*(){if(this.mediaUnavailable_$()!==null)return;if(this.soundRecorder_CS.state_$()===R.stopped){this.qaEnabled()===void 0&&(yield this.loadQaEnabledOnce());try{yield this.soundRecorder_CS.startListening()}catch(t){this.globalError_CS.showError(t,"ccap-voice-record-button")}}else this.soundRecorder_CS.stopListening()})}loadQaEnabledOnce(){return T(this,null,function*(){this.isQaEnabledFromSettings_$.set(yield this.voiceSttQaUi_DS.fetchQaEnabledFlag())})}handleAutoSendAfterVoiceChange(e){this.voiceInputUi_DS.setAutoSendAfterVoice(e)}toggleSettings(){this.settingsOpen_$.update(e=>!e),this.settingsOpen_$()&&this.loadQaSettings()}toggleInfo(){this.infoOpen_$.update(e=>!e)}loadQaSettings(){return T(this,null,function*(){this.qaSettingsLoading_$.set(!0);try{let e=yield this.voiceSttQaUi_DS.loadSttQaSettingsPanelState(),t=e.qa;this.qaSettings_$.set(t),this.confusionMapList_$.set([...t.confusionMap??[]]),this.settingsQaEnabled=t.qaEnabled===!0,this.isQaEnabledFromSettings_$.set(t.qaEnabled===!0),this.qaProviderName=t.providerName??"",this.qaModelName=t.modelName??"",this.llmProviderSelectOptions_$.set(e.llmProviderSelectOptions),this.defaultLlmProvider_$.set(e.defaultLlmProvider),this.defaultLlmModel_$.set(e.defaultLlmModel),this.qaModelsForProvider_$.set(e.qaModelsForProvider),this.qaModelsListFetchError_$.set(e.qaModelsListFetchError)}catch(e){this.globalError_CS.showError(e,"ccap-voice-record-button"),this.qaSettings_$.set(null),this.confusionMapList_$.set([]),this.llmProviderSelectOptions_$.set([]),this.qaModelsListFetchError_$.set(""),this.qaModelsForProvider_$.set([])}finally{this.qaSettingsLoading_$.set(!1)}})}loadQaModelsForProvider(e){return T(this,null,function*(){let t=yield this.voiceSttQaUi_DS.fetchLlmModelsListForSttQa(e);this.qaModelsForProvider_$.set(t.models),this.qaModelsListFetchError_$.set(t.errorMessage)})}onQaProviderChange(){this.loadQaModelsForProvider(this.qaProviderName),this.qaModelName=""}addConfusionEntry(){this.confusionMapList_$.update(e=>[...e,{from:"",to:""}])}removeConfusionEntry(e){this.confusionMapList_$.update(t=>t.filter((i,a)=>a!==e))}updateConfusionFrom(e,t){this.confusionMapList_$.update(i=>{let a=[...i];return a[e]&&(a[e]={from:t,to:a[e].to}),a})}updateConfusionTo(e,t){this.confusionMapList_$.update(i=>{let a=[...i];return a[e]&&(a[e]={from:a[e].from,to:t}),a})}saveQaSettings(){return T(this,null,function*(){this.qaSettingsSaving_$.set(!0);try{let e=this.voiceSttQaUi_DS.normalizeConfusionMapEntries(this.confusionMapList_$());yield this.voiceSttQaUi_DS.saveVoiceNotesQaSettings({confusionMap:e,providerName:this.qaProviderName.trim()||void 0,modelName:this.qaModelName.trim()||void 0,qaEnabled:this.settingsQaEnabled}),this.confusionMapList_$.set([...e]),this.isQaEnabledFromSettings_$.set(this.settingsQaEnabled);let t=this.qaSettings_$();t!==null&&this.qaSettings_$.set({systemPrompt:t.systemPrompt,userPromptTemplate:t.userPromptTemplate,confusionMap:e,providerName:this.qaProviderName.trim()||"",modelName:this.qaModelName.trim()||"",qaEnabled:this.settingsQaEnabled})}catch(e){this.globalError_CS.showError(e,"ccap-voice-record-button")}finally{this.qaSettingsSaving_$.set(!1)}})}onEscape(){this.settingsOpen_$()&&this.settingsOpen_$.set(!1),this.infoOpen_$()&&this.infoOpen_$.set(!1)}effectiveQaEnabled_$=b(()=>this.qaEnabled()!==void 0?this.qaEnabled():this.isQaEnabledFromSettings_$());onChunk(e,t){return T(this,null,function*(){this.pendingTranscriptionCount++,this.busy_$.set(!0);let i=this.emitChain,a=()=>{};this.emitChain=new Promise(u=>{a=u});try{let u=yield this.voiceSttQaUi_DS.transcribeVoiceChunk({blob:e,mimeType:t.mimeType,filename:t.filename,qaEnabled:this.effectiveQaEnabled_$(),noteContext:"",skipClassification:!0,overlapPrevMs:t.overlapPrevMs});if(yield i,u.ok===!1){this.transcriptSegmentReady.emit({text:"",isFinal:t.isFinal,overlapPrevMs:t.overlapPrevMs});return}let _=u;if(_.qaFailed===!0){let v=_.qaFailureMessage?.trim()??"";v.length>0&&this.globalError_CS.showError(new Error(v),"voice-stt-qa")}let w=_.correctedTranscript!=null&&_.correctedTranscript.trim().length>0?_.correctedTranscript.trim():(_.transcript??"").trim();_.usedQa===!0&&(_.transcript??"").trim().length>0&&(_.correctedTranscript??"").trim().length>0&&this.lastQaTransformation_$.set({original:(_.transcript??"").trim(),corrected:(_.correctedTranscript??"").trim(),explanation:(_.qaExplanation??"").trim()||void 0,input:_.qaInput}),w&&(this.transcriptReady.emit(w),this.transcriptSegmentReady.emit({text:w,isFinal:t.isFinal,overlapPrevMs:t.overlapPrevMs}))}catch(u){this.globalError_CS.showError(u,"ccap-voice-record-button")}finally{a(),this.pendingTranscriptionCount--,this.pendingTranscriptionCount<=0&&(this.pendingTranscriptionCount=0,this.busy_$.set(!1))}})}recordStateLabel_$=b(()=>this.soundRecorder_CS.state_$()===R.stopped?"Felv\xE9tel":"Stop");isRecordActive_$=b(()=>{let e=this.soundRecorder_CS.state_$();return e===R.standby||e===R.running});isRecording_$=b(()=>this.soundRecorder_CS.state_$()===R.running);recordButtonAriaLabel_$=b(()=>{let e=this.mediaUnavailable_$();return e||(this.isRecordActive_$()?"Stop":this.busy_$()?"\xDAj felv\xE9tel (feldolgoz\xE1s folyamatban)":"Felv\xE9tel")});recordButtonTitle_$=b(()=>{let e=this.mediaUnavailable_$();return e||(this.isRecordActive_$()?"Stop":this.busy_$()?"\xDAj felv\xE9tel \u2014 el\u0151z\u0151 feldolgoz\xE1s folyamatban":"Felv\xE9tel")});static \u0275fac=function(t){return new(t||n)};static \u0275cmp=Y({type:n,selectors:[["app-ccap-voice-record-button"]],hostBindings:function(t,i){t&1&&m("keydown.escape",function(){return i.onEscape()},!1,ee)},inputs:{qaEnabled:[1,"qaEnabled"],compactLayout:[1,"compactLayout"]},outputs:{transcriptReady:"transcriptReady",transcriptSegmentReady:"transcriptSegmentReady"},standalone:!0,features:[ae],decls:25,vars:14,consts:[[1,"flex","flex-col","items-center","gap-1"],[3,"closed","isOpen","title","maxWidth","zIndex","bodyFlexColumn"],[1,"flex","flex-col","flex-1","min-h-0","w-full","overflow-y-auto","overflow-x-hidden","overscroll-y-contain"],[1,"flex","flex-col","gap-2","shrink-0"],[1,"flex","items-center","gap-2","cursor-pointer","select-none"],["type","checkbox","name","settingsQaEnabled",3,"ngModelChange","ngModel"],[1,"text-sm","text-neutral-300"],["type","checkbox","name","autoSendAfterVoice",3,"ngModelChange","ngModel"],[1,"mt-3","pt-3","border-t","border-neonDefault","flex","flex-col","gap-3","shrink-0"],[1,"mt-3","pt-3","border-t","border-neonDefault","text-xs","text-neutral-400"],["modal-footer","",1,"shrink-0","px-4","py-3","border-t","border-neonDefault"],["type","button",1,"w-full","px-3","py-1.5","text-sm","border","border-neonCyan","rounded","text-neutral-300","hover:shadow-neon-glow-cyan","transition-colors",3,"click"],[3,"closed","isOpen","title","maxWidth","zIndex"],[1,"space-y-2","text-sm"],[1,"text-xs","text-neutral-500"],[1,"flex","items-center","gap-2"],["type","button","aria-label","Be\xE1ll\xEDt\xE1sok","title","Be\xE1ll\xEDt\xE1sok",1,"w-5","h-5","rounded-full","flex","items-center","justify-center","bg-neutral-900","border-2","border-neonDefault","text-neonCyan","hover:border-neonCyan","hover:shadow-neon-glow-cyan","transition-all","duration-200","focus:outline-none","focus:ring-2","focus:ring-neonCyan","focus:ring-offset-2","focus:ring-offset-neutral-900",3,"click"],["viewBox","0 0 24 24","fill","none","stroke","currentColor","stroke-width","2","stroke-linecap","round","stroke-linejoin","round","aria-hidden","true",1,"w-2.5","h-2.5","shrink-0"],["d","M12 15a3 3 0 1 0 0-6 3 3 0 0 0 0 6Z"],["d","M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z"],["type","button",1,"w-5","h-5","rounded-full","flex","items-center","justify-center","bg-neutral-900","border-2","transition-all","duration-200","focus:outline-none","focus:ring-2","focus:ring-offset-2","focus:ring-offset-neutral-900",3,"click"],["cx","12","cy","12","r","10"],["d","M12 16v-4"],["d","M12 8h.01"],["type","button",1,"flex","items-center","justify-center","min-w-[44px]","min-h-[44px]","w-10","h-10","rounded-full","shrink-0","bg-neutral-900","border-2","text-white","transition-all","duration-200","disabled:opacity-50","border-neonDefault","hover:border-neonCyan","hover:shadow-neon-glow-cyan","focus:outline-none","focus:ring-2","focus:ring-neonCyan","focus:ring-offset-2","focus:ring-offset-neutral-900",3,"click","disabled"],["aria-hidden","true",1,"inline-block","w-5","h-5","shrink-0","animate-spin","rounded-full","border-2","border-neonCyan/40","border-t-neonCyan"],[1,"flex","flex-col","items-center","gap-0.5","shrink-0"],[1,"text-[11px]","text-amber-300","leading-tight","max-w-[180px]","text-center"],["aria-hidden","true",1,"relative","w-2","h-6","rounded-sm","bg-neutral-800","overflow-hidden"],["viewBox","0 0 24 24","fill","none","stroke","currentColor","stroke-width","2","stroke-linecap","round","stroke-linejoin","round","aria-hidden","true",1,"w-5","h-5","shrink-0","text-neonCyan"],["d","M12 2a3 3 0 0 1 3 3v7a3 3 0 0 1-6 0V5a3 3 0 0 1 3-3Z"],["d","M19 10v2a7 7 0 0 1-14 0v-2"],["x1","12","y1","19","x2","12","y2","22"],[1,"absolute","inset-x-0","bottom-0","bg-neonCyan","transition-[height]","duration-75"],[1,"absolute","inset-x-0","h-0.5","bg-neonAmber","rounded-sm","z-10",2,"bottom","5%"],["aria-hidden","true",1,"mr-1"],[1,"relative","inline-flex"],["type","button","aria-label","Be\xE1ll\xEDt\xE1sok","title","Be\xE1ll\xEDt\xE1sok",1,"absolute","right-full","mr-4","top-1/2","-translate-y-1/2","w-5","h-5","rounded-full","flex","items-center","justify-center","bg-neutral-900","border-2","border-neonDefault","text-neonCyan","hover:border-neonCyan","hover:shadow-neon-glow-cyan","transition-all","duration-200","focus:outline-none","focus:ring-2","focus:ring-neonCyan","focus:ring-offset-2","focus:ring-offset-neutral-900",3,"click"],["type","button",1,"absolute","left-full","ml-4","top-1/2","-translate-y-1/2","w-5","h-5","rounded-full","flex","items-center","justify-center","bg-neutral-900","border-2","transition-all","duration-200","focus:outline-none","focus:ring-2","focus:ring-offset-2","focus:ring-offset-neutral-900",3,"click"],[1,"text-[11px]","text-amber-300","leading-tight","max-w-[240px]","mt-1"],[1,"shrink-0"],[1,"text-xs","font-medium","text-neutral-400","mb-1"],[1,"text-xs","text-neutral-300","whitespace-pre-wrap","break-words"],[1,"text-xs","text-neutral-300","whitespace-pre-wrap","break-words","font-mono"],[1,"text-[10px]","text-neonAmber","mt-1"],[1,"text-[10px]","text-neutral-500","mb-1"],[1,"flex","flex-wrap","gap-2","items-center"],["name","qaProviderName",1,"px-2","py-1","text-xs","bg-neutral-800","border","border-neonDefault","rounded","text-neutral-200","min-w-[120px]",3,"ngModelChange","ngModel"],["value",""],[3,"value"],["name","qaModelName",1,"px-2","py-1","text-xs","bg-neutral-800","border","border-neonDefault","rounded","text-neutral-200","min-w-[140px]",3,"ngModel"],["type","text","name","qaModelNameText","placeholder","Modell id (lista nem el\xE9rhet\u0151 ehhez a providerhez)",1,"px-2","py-1","text-xs","bg-neutral-800","border","border-neonDefault","rounded","text-neutral-200","min-w-[140px]","font-mono",3,"ngModel"],[1,"text-[10px]","text-amber-300/90","mt-1"],[1,"flex","flex-col","shrink-0"],[1,"text-xs","font-medium","text-neutral-400","mb-1","shrink-0"],[1,"space-y-1.5","rounded","border","border-neonDefault/50","bg-neutral-800/20","p-2"],[1,"flex","flex-wrap","gap-2","items-center","shrink-0","mt-2"],["type","button",1,"px-2","py-1","text-xs","border","border-neonDefault","rounded","text-neutral-400","hover:border-neonCyan","hover:text-neonCyan","transition-colors",3,"click"],["type","button",1,"px-2","py-1","text-xs","border","border-neonCyan","rounded","text-neonCyan","hover:shadow-neon-glow-cyan","disabled:opacity-50","transition-colors",3,"click","disabled"],["name","qaModelName",1,"px-2","py-1","text-xs","bg-neutral-800","border","border-neonDefault","rounded","text-neutral-200","min-w-[140px]",3,"ngModelChange","ngModel"],["type","text","name","qaModelNameText","placeholder","Modell id (lista nem el\xE9rhet\u0151 ehhez a providerhez)",1,"px-2","py-1","text-xs","bg-neutral-800","border","border-neonDefault","rounded","text-neutral-200","min-w-[140px]","font-mono",3,"ngModelChange","ngModel"],["type","text","placeholder","El\xEDr\xE1s / f\xE9lrehall\xE1s",1,"flex-1","min-w-0","px-2","py-1","text-xs","bg-neutral-800","border","border-neonDefault","rounded","text-neutral-200","placeholder-neutral-500",3,"input","value"],[1,"text-neutral-500","shrink-0"],["type","text","placeholder","Helyes forma",1,"flex-1","min-w-0","px-2","py-1","text-xs","bg-neutral-800","border","border-neonDefault","rounded","text-neutral-200","placeholder-neutral-500",3,"input","value"],["type","button","aria-label","Sor t\xF6rl\xE9se","title","Sor t\xF6rl\xE9se",1,"shrink-0","p-1","text-neutral-500","hover:text-neonRed","transition-colors",3,"click"],[1,"sr-only"],["viewBox","0 0 24 24","fill","none","stroke","currentColor","stroke-width","2",1,"w-3.5","h-3.5"],["d","M18 6L6 18M6 6l12 12"],[1,"mt-3","pt-3","border-t","border-neonDefault","text-xs","text-neutral-500"],["type","button",1,"mt-1.5","px-2","py-1","text-xs","border","border-neonDefault","rounded","text-neutral-400","hover:border-neonCyan","hover:text-neonCyan","transition-colors",3,"click"],[1,"rounded-md","border","border-neonAmber/45","bg-neutral-950/95","p-2.5","mb-1"],[1,"font-medium","text-neonAmber"],[1,"text-neutral-400","text-xs"],[1,"text-neutral-200","break-words"],[1,"text-neutral-400","text-xs","mt-2"],[1,"text-[10px]","font-semibold","uppercase","tracking-wide","text-neonAmber/90","mb-1.5"],[1,"text-xs","leading-relaxed","whitespace-pre-wrap","break-words"],[1,"text-[10px]","text-neutral-500","mt-1.5","leading-snug"],[1,"text-neutral-300"],[1,"mx-0.5","inline","rounded","px-0.5","text-red-300/95","line-through","decoration-red-400/85","bg-red-950/50","border","border-red-900/45"],[1,"mx-0.5","inline","rounded","px-0.5","text-neonAmber","bg-amber-950/55","border","border-neonAmber/50","shadow-[0_0_10px_rgb(251_191_36/0.28)]"],[1,"text-neutral-300","break-words"]],template:function(t,i){if(t&1&&(C(0,Ae,15,35,"div",0)(1,Re,14,35),o(2,"app-s-modal",1),m("closed",function(){return i.settingsOpen_$.set(!1)}),o(3,"div",2)(4,"div",3)(5,"label",4)(6,"input",5),O("ngModelChange",function(u){return W(i.settingsQaEnabled,u)||(i.settingsQaEnabled=u),u}),r(),o(7,"span",6),d(8,"STT QA"),r()(),o(9,"label",4)(10,"input",7),m("ngModelChange",function(u){return i.handleAutoSendAfterVoiceChange(u)}),r(),o(11,"span",6),d(12,"Send immediately after voice (Mimik-style)"),r()()(),C(13,Oe,38,11,"div",8)(14,Ie,2,0,"p",9)(15,ze,4,0),r(),o(16,"div",10)(17,"button",11),m("click",function(){return i.settingsOpen_$.set(!1)}),d(18," Bez\xE1r\xE1s "),r()()(),o(19,"app-s-modal",12),m("closed",function(){return i.infoOpen_$.set(!1)}),C(20,Ze,13,4,"div",13)(21,Xe,2,0,"p",14),o(22,"div",10)(23,"button",11),m("click",function(){return i.infoOpen_$.set(!1)}),d(24," Bez\xE1r\xE1s "),r()()()),t&2){let a,u;g(i.compactLayout()?0:1),l(2),y("isOpen",i.settingsOpen_$())("title","Voice Input be\xE1ll\xEDt\xE1sok")("maxWidth","lg")("zIndex","40")("bodyFlexColumn",!0),l(4),N("ngModel",i.settingsQaEnabled),l(4),y("ngModel",i.voiceInputUi_DS.autoSendAfterVoice_$()),l(3),g((a=i.qaSettings_$())?13:i.qaSettingsLoading_$()?14:15,a),l(6),y("isOpen",i.infoOpen_$())("title","Utols\xF3 QA eredm\xE9ny")("maxWidth","md")("zIndex","40"),l(),g((u=i.lastQaTransformation_$())?20:21,u)}},dependencies:[pe,_e,me,se,le,ue,de,ce,xe],encapsulation:2})}return n})();export{ve as a,bt as b};
2
+ //# sourceMappingURL=chunk-IUAZJ3PT.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["src/app/_modules/dev/_modules/poc/_modules/voice-notes-poc/_services/vnp-input-ui.data-service.ts", "src/app/_enums/voice/ccap-stt-qa-word-diff-segment-kind.enum.ts", "src/app/_collections/utils/model-testing/ccap-stt-qa-text-diff.util.ts", "src/app/_components/ccap-voice-record-button/ccap-voice-record-button.component.ts", "src/app/_components/ccap-voice-record-button/ccap-voice-record-button.component.html"],
4
+ "sourcesContent": ["import { Injectable, signal, WritableSignal } from '@angular/core';\n\nimport { Shr_LocalStoragePersistence_Util } from '../../../../../../shared/_collections/utils/storage/shr-local-storage-persistence.util';\n\n/** localStorage kulcs — hang input után azonnali küldés (chat / külső konzolok). */\nconst CCAP_VOICE_INPUT_AUTO_SEND_AFTER_VOICE_KEY: string = 'ccap-voiceInput:autoSendAfterVoice';\n\n/**\n * Voice input composer globális UI állapot — a hang gomb beállítások paneljéből vezérelhető,\n * minden `app-ccap-voice-record-button` kontextusban ugyanaz a döntés érvényesül.\n *\n * REQ-UI-MENU-STATE-001 (cycle 459): a localStorage I/O most a shared\n * `Shr_LocalStoragePersistence_Util.readString / writeString` metódusokra\n * delegál. Az on-disk format (`'true'` / `'false'` literális string) változatlan\n * — szándékosan `writeString(String(value))` a `writeBoolean` (`'1'`/`'0'`)\n * helyett, hogy a meglévő spec round-trip elvárás (`getItem === 'true'`)\n * + a backward-compat felhasználói localStorage értékek konzisztensek\n * maradjanak. A best-effort try/catch most a shared util-ban van. A korábbi\n * top-level `function readAutoSendAfterVoiceFromStorage()` private static\n * methodként került be a class-ba (CLAUDE.md no-top-level-function).\n */\n@Injectable({ providedIn: 'root' })\nexport class VNP_InputUi_DataService {\n\n /** Ha true, a STT transcript után azonnal küldés fut (Mimik-minta); ha false, csak hozzáfűzés a mezőhöz. */\n readonly autoSendAfterVoice_$: WritableSignal<boolean> =\n signal<boolean>(VNP_InputUi_DataService.readAutoSendAfterVoiceFromStorage());\n\n /**\n * „Hang után azonnal\" toggle — signal + localStorage perzisztencia.\n */\n setAutoSendAfterVoice(value: boolean): void {\n this.autoSendAfterVoice_$.set(value);\n Shr_LocalStoragePersistence_Util.writeString(CCAP_VOICE_INPUT_AUTO_SEND_AFTER_VOICE_KEY, String(value));\n }\n\n /**\n * Böngészőből olvassa az „azonnal küldés hang után\" flag-et (default: false).\n */\n private static readAutoSendAfterVoiceFromStorage(): boolean {\n return Shr_LocalStoragePersistence_Util.readString(CCAP_VOICE_INPUT_AUTO_SEND_AFTER_VOICE_KEY) === 'true';\n }\n}\n", "/**\n * STT QA szöveg word-diff szegmens típusa (egyenlő / törölt / új).\n */\nexport enum CCAP_SttQaWordDiffSegmentKind_Type {\n equal = 'equal',\n removed = 'removed',\n added = 'added',\n}\n", "import { CCAP_SttQaWordDiffSegmentKind_Type } from '../../../_enums/voice/ccap-stt-qa-word-diff-segment-kind.enum';\nimport { CCAP_SttQaWordDiffSegment_Interface } from '../../../_models/interfaces/voice/transcribe/ccap-stt-qa-word-diff-segment.interface';\n\ntype CCAP_SttQaWordDiffRawSegment_Interface = {\n kind: CCAP_SttQaWordDiffSegmentKind_Type;\n text: string;\n};\n\n/**\n * STT QA eredeti vs javított szöveg word-token alapú diff (LCS) — modal összefoglaló highlight-hoz.\n */\nexport class CCAP_SttQaTextDiff_Util {\n /**\n * Whitespace-megtartó tokenizálás: szavak és whitespace külön token (LCS egy sorban tartja a szerkezetet).\n */\n private static tokenize(input: string): string[] {\n const trimmed: string = input;\n if (trimmed.length === 0) {\n return [];\n }\n const parts: string[] = trimmed.split(/(\\s+)/);\n const out: string[] = [];\n for (let i: number = 0; i < parts.length; i++) {\n const p: string = parts[i];\n if (p.length > 0) {\n out.push(p);\n }\n }\n return out;\n }\n\n /**\n * Egymás melletti azonos kind szegmensek összefűzése, majd id kiosztás.\n */\n private static mergeAndAssignIds(\n raw: CCAP_SttQaWordDiffRawSegment_Interface[],\n ): CCAP_SttQaWordDiffSegment_Interface[] {\n if (raw.length === 0) {\n return [];\n }\n const merged: CCAP_SttQaWordDiffRawSegment_Interface[] = [];\n for (let i: number = 0; i < raw.length; i++) {\n const cur: CCAP_SttQaWordDiffRawSegment_Interface = raw[i];\n const last: CCAP_SttQaWordDiffRawSegment_Interface | undefined = merged[merged.length - 1];\n if (last !== undefined && last.kind === cur.kind) {\n last.text = last.text + cur.text;\n } else {\n merged.push({ kind: cur.kind, text: cur.text });\n }\n }\n const withIds: CCAP_SttQaWordDiffSegment_Interface[] = [];\n for (let k: number = 0; k < merged.length; k++) {\n const m: CCAP_SttQaWordDiffRawSegment_Interface = merged[k];\n withIds.push({\n id: k,\n kind: m.kind,\n text: m.text,\n });\n }\n return withIds;\n }\n\n /**\n * Word-token LCS diff: unified sor — equal / removed / added szegmensek sorrendben (javított szöveg kontextusához).\n */\n static buildWordDiff(oldText: string, newText: string): CCAP_SttQaWordDiffSegment_Interface[] {\n const a: string[] = CCAP_SttQaTextDiff_Util.tokenize(oldText);\n const b: string[] = CCAP_SttQaTextDiff_Util.tokenize(newText);\n const n: number = a.length;\n const m: number = b.length;\n const dp: number[][] = [];\n for (let i: number = 0; i <= n; i++) {\n const row: number[] = [];\n for (let j: number = 0; j <= m; j++) {\n row.push(0);\n }\n dp.push(row);\n }\n for (let i: number = 1; i <= n; i++) {\n for (let j: number = 1; j <= m; j++) {\n if (a[i - 1] === b[j - 1]) {\n dp[i][j] = dp[i - 1][j - 1] + 1;\n } else {\n const up: number = dp[i - 1][j];\n const left: number = dp[i][j - 1];\n dp[i][j] = up > left ? up : left;\n }\n }\n }\n const rawBackwards: CCAP_SttQaWordDiffRawSegment_Interface[] = [];\n let i: number = n;\n let j: number = m;\n while (i > 0 || j > 0) {\n if (i > 0 && j > 0 && a[i - 1] === b[j - 1]) {\n rawBackwards.push({\n kind: CCAP_SttQaWordDiffSegmentKind_Type.equal,\n text: a[i - 1],\n });\n i -= 1;\n j -= 1;\n } else if (j > 0 && (i === 0 || dp[i][j - 1] >= dp[i - 1][j])) {\n rawBackwards.push({\n kind: CCAP_SttQaWordDiffSegmentKind_Type.added,\n text: b[j - 1],\n });\n j -= 1;\n } else if (i > 0) {\n rawBackwards.push({\n kind: CCAP_SttQaWordDiffSegmentKind_Type.removed,\n text: a[i - 1],\n });\n i -= 1;\n }\n }\n const rawForward: CCAP_SttQaWordDiffRawSegment_Interface[] = [];\n for (let k: number = rawBackwards.length - 1; k >= 0; k--) {\n rawForward.push(rawBackwards[k]);\n }\n return CCAP_SttQaTextDiff_Util.mergeAndAssignIds(rawForward);\n }\n}\n", "import {\n Component,\n OnInit,\n OnDestroy,\n input,\n InputSignal,\n Output,\n EventEmitter,\n inject,\n signal,\n computed,\n HostListener,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport type { CCAP_TranscribeSuccess_Response } from '../../_models/interfaces/voice/transcribe/ccap-transcribe-success-response.interface';\nimport type { CCAP_Transcribe_Response } from '../../_models/interfaces/voice/transcribe/ccap-transcribe-response.interface';\nimport type { CCAP_VoiceNotesQaSettings_Response as CCAP_VoiceNotesQaSettingsResponse_Interface } from '../../_models/interfaces/voice/voice-notes/ccap-voice-notes-qa-settings-response.interface';\nimport type { CCAP_LlmProviderSelectOption_Interface } from '../../_models/interfaces/settings/ccap-llm-provider-select-option.interface';\nimport type {\n Voc_SttQaConfusionMapEntry_Response,\n Voc_SttQaInput_Response,\n} from '../../_models/server-index';\nimport { CCAP_GlobalError_ControlService } from '../../_services/control-services/ccap-global-error.control-service';\nimport { CCAP_SoundRecorder_ControlService } from '../../_services/control-services/ccap-sound-recorder.control-service';\nimport { VNP_SttQaUi_DataService } from '../../_modules/dev/_modules/poc/_modules/voice-notes-poc/_services/vnp-stt-qa-ui.data-service';\nimport { VNP_InputUi_DataService } from '../../_modules/dev/_modules/poc/_modules/voice-notes-poc/_services/vnp-input-ui.data-service';\nimport { CCAP_SoundRecorderState_State } from '../../_enums/ccap-sound-recorder-state.enum';\nimport { CCAP_SoundRecorderChunkMeta_Interface } from '../../_services/control-services/ccap-sound-recorder-chunk-meta.interface';\nimport { CCAP_MediaRecording_Util } from '../../_collections/utils/media-recording/media-recording.util';\nimport { CCAP_SttQaTextDiff_Util } from '../../_collections/utils/model-testing/ccap-stt-qa-text-diff.util';\nimport { CCAP_SttQaWordDiffSegmentKind_Type } from '../../_enums/voice/ccap-stt-qa-word-diff-segment-kind.enum';\nimport { CCAP_SttQaWordDiffSegment_Interface } from '../../_models/interfaces/voice/transcribe/ccap-stt-qa-word-diff-segment.interface';\nimport { S_Modal_Component } from '../../_modules/shared/_components/s-modal/s-modal.component';\n\n/**\n * Beágyazható hangrögzítő gomb: rögzít → STT (és opcionális QA) → transcriptReady emit.\n * Inputokra rakható (pl. chat input felső border közepére).\n */\n@Component({\n selector: 'app-ccap-voice-record-button',\n standalone: true,\n imports: [FormsModule, S_Modal_Component],\n templateUrl: './ccap-voice-record-button.component.html',\n})\n/** CCAP_VoiceRecordButton_Component class. */\nexport class CCAP_VoiceRecordButton_Component implements OnInit, OnDestroy {\n\n private readonly globalError_CS: CCAP_GlobalError_ControlService =\n inject(CCAP_GlobalError_ControlService);\n private readonly soundRecorder_CS: CCAP_SoundRecorder_ControlService =\n inject(CCAP_SoundRecorder_ControlService);\n private readonly voiceSttQaUi_DS: VNP_SttQaUi_DataService =\n inject(VNP_SttQaUi_DataService);\n readonly voiceInputUi_DS: VNP_InputUi_DataService = inject(VNP_InputUi_DataService);\n\n /** STT QA bekapcsolva; ha nincs megadva, a mentett QA beállításból töltjük (GET qa-settings). */\n readonly qaEnabled: InputSignal<boolean | undefined> = input<boolean | undefined>(undefined);\n\n /** Compact layout: beállítás + infó gombok a rekordgomb fölé kerülnek (két oldal helyett). */\n readonly compactLayout: InputSignal<boolean> = input<boolean>(false);\n\n /** Sikeres transcribe után a végső szöveg (corrected vagy transcript). */\n @Output() transcriptReady = new EventEmitter<string>();\n\n /**\n * Szegmens transcribe eredmény: szöveg + isFinal flag (auto-send akkumuláció a consumer-ben).\n * Slice 3 (cycle 947): `overlapPrevMs` echo a dual-recorder swap átfedés-jelölésére —\n * a consumer a `CCAP_VoiceInputDedup_Util.deduplicateOverlap()`-pel távolíthatja el\n * a szegmens prefix-éből az átfedési duplikációt mielőtt akkumulál.\n */\n @Output() transcriptSegmentReady = new EventEmitter<{\n text: string;\n isFinal: boolean;\n overlapPrevMs: number;\n }>();\n\n /** Felvétel / feldolgozás folyamatban (legalább egy transzkripció fut). */\n readonly busy_$ = signal<boolean>(false);\n /** Párhuzamos transzkripciók száma (mid-recording flush + final flush egyszerre futhat). */\n private pendingTranscriptionCount: number = 0;\n /**\n * Emit-sorrendesítő lánc: a transzkripciók párhuzamosan futnak (sebesség), de a\n * `transcriptReady` + `transcriptSegmentReady` emit-ek szigorúan chunkIndex-sorrendben\n * mennek ki. Enélkül ha egy rövidebb, `isFinal=true` szegmens előbb tér vissza a\n * hosszabb első szegmensnél, a consumer auto-send-je a teljes akkumulálás ELŐTT tüzelhet\n * (BUG-VO-001: 30s+ voice input elejének elvesztése).\n */\n private emitChain: Promise<void> = Promise.resolve();\n /** Hangerő 0..1 (volume gate indikátor). */\n readonly volume_$ = signal<number>(0);\n /** Betöltött QA beállítás qaEnabled (ha nem volt @Input). */\n private readonly isQaEnabledFromSettings_$ = signal<boolean>(false);\n /** Beállítások overlay nyitva. */\n readonly settingsOpen_$ = signal<boolean>(false);\n /** STT QA beállítások (betöltve); null ha még nincs. */\n readonly qaSettings_$ = signal<CCAP_VoiceNotesQaSettingsResponse_Interface | null>(null);\n /** Confusion map a beállításokban szerkesztve. */\n readonly confusionMapList_$ = signal<Voc_SttQaConfusionMapEntry_Response[]>([]);\n /** QA beállítások mentése folyamatban. */\n readonly qaSettingsSaving_$ = signal<boolean>(false);\n /** QA beállítások betöltése folyamatban. */\n readonly qaSettingsLoading_$ = signal<boolean>(false);\n /** STT QA toggle a beállításokban (szinkron isQaEnabledFromSettings-szel mentéskor). */\n settingsQaEnabled: boolean = false;\n /** STT QA provider és modell (beállítások form). */\n qaProviderName: string = '';\n qaModelName: string = '';\n /** LLM provider választó sorok (value + label), LLM settings-szel megegyező címkék. */\n readonly llmProviderSelectOptions_$ = signal<CCAP_LlmProviderSelectOption_Interface[]>([]);\n /** Kiválasztott QA provider modell listája. */\n readonly qaModelsForProvider_$ = signal<string[]>([]);\n /** list-llm-models hibaüzenet (üres = nincs); cloud provider / API hiba. */\n readonly qaModelsListFetchError_$ = signal<string>('');\n /** Utolsó STT QA javítás (eredeti → javított + opcionális magyarázat); null ha nem volt QA. */\n readonly lastQaTransformation_$ = signal<{\n original: string;\n corrected: string;\n explanation?: string;\n input?: Voc_SttQaInput_Response;\n } | null>(null);\n /** QA eredmény (infó) overlay nyitva. */\n readonly infoOpen_$ = signal<boolean>(false);\n /** Hangfelvétel nem elérhető (pl. nem secure context); null ha elérhető. User-facing message (title/aria). */\n readonly mediaUnavailable_$ = signal<string | null>(null);\n\n /** Globál alapértelmezett LLM provider (override jelzéshez). */\n readonly defaultLlmProvider_$ = signal<string>('');\n /** Globál alapértelmezett LLM modell (override jelzéshez). */\n readonly defaultLlmModel_$ = signal<string>('');\n\n /** Hangerő százalék (computed). */\n readonly volumePercent_$ = computed((): number => Math.min(100, this.volume_$() * 250));\n\n /** Modell választó: van lista a szerverről (vagy mentett modell merge). */\n readonly qaShowModelSelect_$ = computed((): boolean => this.qaModelsForProvider_$().length > 0);\n\n /**\n * Utolsó QA futás után a nyers STT és a corrected szöveg eltér — Info gomb vizuális kiemelése (még apró eltérés is).\n */\n readonly lastQaTextWasModified_$ = computed((): boolean => {\n const t: {\n original: string;\n corrected: string;\n explanation?: string;\n input?: Voc_SttQaInput_Response;\n } | null = this.lastQaTransformation_$();\n if (t === null) {\n return false;\n }\n return t.original !== t.corrected;\n });\n\n /**\n * Utolsó QA eredeti vs javított word-diff szegmensek — infó modal tetején highlighted összefoglaló.\n */\n readonly lastQaWordDiffSegments_$ = computed((): CCAP_SttQaWordDiffSegment_Interface[] => {\n const t: {\n original: string;\n corrected: string;\n explanation?: string;\n input?: Voc_SttQaInput_Response;\n } | null = this.lastQaTransformation_$();\n if (t === null || t.original === t.corrected) {\n return [];\n }\n return CCAP_SttQaTextDiff_Util.buildWordDiff(t.original, t.corrected);\n });\n\n /** Template: STT QA diff szegmens kind összehasonlítás. */\n readonly SttQaDiffKind: typeof CCAP_SttQaWordDiffSegmentKind_Type = CCAP_SttQaWordDiffSegmentKind_Type;\n\n /** Globál default provider megjelenített címke. */\n readonly defaultLlmProviderDisplayLabel_$ = computed((): string => {\n const opts: CCAP_LlmProviderSelectOption_Interface[] = this.llmProviderSelectOptions_$();\n const id: string = this.defaultLlmProvider_$().trim();\n if (!id.length) {\n return '';\n }\n const hit: CCAP_LlmProviderSelectOption_Interface | undefined = opts.find(\n (o: CCAP_LlmProviderSelectOption_Interface): boolean => o.value === id,\n );\n return hit?.label ?? id;\n });\n\n /** QA override provider címke (ha nincs az opciók között, nyers id). */\n readonly qaProviderDisplayLabel_$ = computed((): string => {\n const id: string = this.qaProviderName.trim();\n if (!id.length) {\n return '';\n }\n const opts: CCAP_LlmProviderSelectOption_Interface[] = this.llmProviderSelectOptions_$();\n const hit: CCAP_LlmProviderSelectOption_Interface | undefined = opts.find(\n (o: CCAP_LlmProviderSelectOption_Interface): boolean => o.value === id,\n );\n return hit?.label ?? id;\n });\n\n ngOnInit(): void {\n const availability = CCAP_MediaRecording_Util.getMediaRecordingAvailability();\n if (!availability.supported && availability.reason) {\n const reason: string = availability.reason;\n this.mediaUnavailable_$.set(CCAP_MediaRecording_Util.getMediaUnavailableMessage(reason));\n this.globalError_CS.reportErrorOnly({\n message: CCAP_MediaRecording_Util.getMediaUnavailableReportMessage(reason),\n source: 'ccap-voice-record-button',\n });\n }\n this.soundRecorder_CS.setOnChunk((blob: Blob, meta: CCAP_SoundRecorderChunkMeta_Interface): void => {\n void this.onChunk(blob, meta);\n });\n this.soundRecorder_CS.setOnVolume((value: number): void => {\n this.volume_$.set(value);\n });\n this.soundRecorder_CS.setOnError((err: unknown): void => {\n this.globalError_CS.showError(err, 'ccap-voice-record-button');\n });\n }\n\n ngOnDestroy(): void {\n this.soundRecorder_CS.stopListening();\n // Callback-eket NEM töröljük szándékosan:\n // 1. A stopListening aszinkron onstop handler-jének szüksége van az onChunkCb-re az utolsó chunk flush-jához.\n // 2. Ha navigáció történik és új voice-record-button jön létre, annak ngOnInit felülírja a callback-eket.\n // 3. setTimeout-os késleltetett törlés race condition-t okoz: ha az új component ngOnInit hamarabb fut\n // mint a setTimeout (mindig!), az új component callback-jeit is no-op-ra írja → volume indikátor\n // nem mozdul, chunk-ok elvesznek. A singleton service (providedIn: 'root') miatt ez 8 oldalon\n // minden navigáláskor reprodukálható bug.\n }\n\n /** Felvétel indítása vagy leállítása. */\n async toggleRecord(): Promise<void> {\n if (this.mediaUnavailable_$() !== null) {\n return;\n }\n const state: CCAP_SoundRecorderState_State = this.soundRecorder_CS.state_$();\n if (state === CCAP_SoundRecorderState_State.stopped) {\n if (this.qaEnabled() === undefined) {\n await this.loadQaEnabledOnce();\n }\n try {\n await this.soundRecorder_CS.startListening();\n } catch (err: unknown) {\n this.globalError_CS.showError(err, 'ccap-voice-record-button');\n }\n } else {\n this.soundRecorder_CS.stopListening();\n }\n }\n\n /** QA beállítás egyszeri betöltése (qaEnabled tárolására). */\n private async loadQaEnabledOnce(): Promise<void> {\n this.isQaEnabledFromSettings_$.set(await this.voiceSttQaUi_DS.fetchQaEnabledFlag());\n }\n\n /**\n * „Hang után azonnali küldés” — Voice Input beállítások panel; globál UI + localStorage.\n */\n handleAutoSendAfterVoiceChange(value: boolean): void {\n this.voiceInputUi_DS.setAutoSendAfterVoice(value);\n }\n\n /** Beállítások overlay megnyitása/bezárása. */\n toggleSettings(): void {\n this.settingsOpen_$.update((v: boolean): boolean => !v);\n if (!this.settingsOpen_$()) {\n return;\n }\n void this.loadQaSettings();\n }\n\n /** QA eredmény (infó) overlay megnyitása/bezárása. */\n toggleInfo(): void {\n this.infoOpen_$.update((v: boolean): boolean => !v);\n }\n\n /** STT QA beállítások betöltése (beállítások megnyitásakor). */\n async loadQaSettings(): Promise<void> {\n this.qaSettingsLoading_$.set(true);\n try {\n const state = await this.voiceSttQaUi_DS.loadSttQaSettingsPanelState();\n const res = state.qa;\n this.qaSettings_$.set(res);\n this.confusionMapList_$.set([...(res.confusionMap ?? [])]);\n this.settingsQaEnabled = res.qaEnabled === true;\n this.isQaEnabledFromSettings_$.set(res.qaEnabled === true);\n this.qaProviderName = res.providerName ?? '';\n this.qaModelName = res.modelName ?? '';\n this.llmProviderSelectOptions_$.set(state.llmProviderSelectOptions);\n this.defaultLlmProvider_$.set(state.defaultLlmProvider);\n this.defaultLlmModel_$.set(state.defaultLlmModel);\n this.qaModelsForProvider_$.set(state.qaModelsForProvider);\n this.qaModelsListFetchError_$.set(state.qaModelsListFetchError);\n } catch (err: unknown) {\n this.globalError_CS.showError(err, 'ccap-voice-record-button');\n this.qaSettings_$.set(null);\n this.confusionMapList_$.set([]);\n this.llmProviderSelectOptions_$.set([]);\n this.qaModelsListFetchError_$.set('');\n this.qaModelsForProvider_$.set([]);\n } finally {\n this.qaSettingsLoading_$.set(false);\n }\n }\n\n /** Kiválasztott QA provider modell listájának betöltése. */\n async loadQaModelsForProvider(providerId: string): Promise<void> {\n const out = await this.voiceSttQaUi_DS.fetchLlmModelsListForSttQa(providerId);\n this.qaModelsForProvider_$.set(out.models);\n this.qaModelsListFetchError_$.set(out.errorMessage);\n }\n\n /** QA provider megváltozott: modell lista újratöltése. */\n onQaProviderChange(): void {\n void this.loadQaModelsForProvider(this.qaProviderName);\n this.qaModelName = '';\n }\n\n /** Új confusion map sor hozzáadása. */\n addConfusionEntry(): void {\n this.confusionMapList_$.update(\n (list: Voc_SttQaConfusionMapEntry_Response[]): Voc_SttQaConfusionMapEntry_Response[] =>\n [...list, { from: '', to: '' }],\n );\n }\n\n /** Confusion map sor törlése. */\n removeConfusionEntry(index: number): void {\n this.confusionMapList_$.update(\n (list: Voc_SttQaConfusionMapEntry_Response[]): Voc_SttQaConfusionMapEntry_Response[] =>\n list.filter((_: Voc_SttQaConfusionMapEntry_Response, i: number): boolean => i !== index),\n );\n }\n\n /** Confusion map sor „from” mezőjének frissítése. */\n updateConfusionFrom(index: number, value: string): void {\n this.confusionMapList_$.update(\n (list: Voc_SttQaConfusionMapEntry_Response[]): Voc_SttQaConfusionMapEntry_Response[] => {\n const next: Voc_SttQaConfusionMapEntry_Response[] = [...list];\n if (next[index]) {\n next[index] = { from: value, to: next[index].to };\n }\n return next;\n },\n );\n }\n\n /** Confusion map sor „to” mezőjének frissítése. */\n updateConfusionTo(index: number, value: string): void {\n this.confusionMapList_$.update(\n (list: Voc_SttQaConfusionMapEntry_Response[]): Voc_SttQaConfusionMapEntry_Response[] => {\n const next: Voc_SttQaConfusionMapEntry_Response[] = [...list];\n if (next[index]) {\n next[index] = { from: next[index].from, to: value };\n }\n return next;\n },\n );\n }\n\n /** QA beállítások mentése a szerverre. */\n async saveQaSettings(): Promise<void> {\n this.qaSettingsSaving_$.set(true);\n try {\n const list: Voc_SttQaConfusionMapEntry_Response[] =\n this.voiceSttQaUi_DS.normalizeConfusionMapEntries(this.confusionMapList_$());\n\n await this.voiceSttQaUi_DS.saveVoiceNotesQaSettings({\n confusionMap: list,\n providerName: this.qaProviderName.trim() || undefined,\n modelName: this.qaModelName.trim() || undefined,\n qaEnabled: this.settingsQaEnabled,\n });\n this.confusionMapList_$.set([...list]);\n this.isQaEnabledFromSettings_$.set(this.settingsQaEnabled);\n const current = this.qaSettings_$();\n if (current !== null) {\n this.qaSettings_$.set({\n systemPrompt: current.systemPrompt,\n userPromptTemplate: current.userPromptTemplate,\n confusionMap: list,\n providerName: this.qaProviderName.trim() || '',\n modelName: this.qaModelName.trim() || '',\n qaEnabled: this.settingsQaEnabled,\n });\n }\n } catch (err: unknown) {\n this.globalError_CS.showError(err, 'ccap-voice-record-button');\n } finally {\n this.qaSettingsSaving_$.set(false);\n }\n }\n\n /** Escape: beállítások és QA eredmény overlay bezárása. */\n @HostListener('document:keydown.escape')\n onEscape(): void {\n if (this.settingsOpen_$()) {\n this.settingsOpen_$.set(false);\n }\n if (this.infoOpen_$()) {\n this.infoOpen_$.set(false);\n }\n }\n\n private readonly effectiveQaEnabled_$ = computed((): boolean => {\n if (this.qaEnabled() !== undefined) {\n return this.qaEnabled()!;\n }\n return this.isQaEnabledFromSettings_$();\n });\n\n /**\n * Chunk megérkezett: transcribe párhuzamosan, emit szigorúan chunkIndex-sorrendben.\n *\n * Sorrend-garancia: minden `onChunk` hívás captolja a korábbi `emitChain`-t, és a saját\n * új Promise-ét kiköti rá; a transzkripció azonnal indul (párhuzam megtartva), de az emit\n * csak a `prevEmitQueue` lejárta után történik. Ezzel az `isFinal=true` szegmens emit-je\n * mindig a korábbi (non-final) szegmensek emit-je UTÁN megy ki, akkor is, ha hamarabb\n * végez a transzkripcióval.\n */\n private async onChunk(\n blob: Blob,\n meta: CCAP_SoundRecorderChunkMeta_Interface,\n ): Promise<void> {\n this.pendingTranscriptionCount++;\n this.busy_$.set(true);\n // Emit-slot foglalás: captoljuk a korábbi láncot, és saját Promise-szal hosszabbítjuk.\n // A `releaseEmitSlot` a finally blokkban kell minden ágon lefusson, különben a következő\n // szegmens emit-je örökre blokkolódik.\n const prevEmitQueue: Promise<void> = this.emitChain;\n let releaseEmitSlot: () => void = () => {};\n this.emitChain = new Promise<void>((resolve: () => void) => {\n releaseEmitSlot = resolve;\n });\n try {\n const res: CCAP_Transcribe_Response = await this.voiceSttQaUi_DS.transcribeVoiceChunk({\n blob: blob,\n mimeType: meta.mimeType,\n filename: meta.filename,\n qaEnabled: this.effectiveQaEnabled_$(),\n noteContext: '',\n skipClassification: true,\n // Slice 3 (cycle 947): dual-recorder swap overlap-ms a szerverhez headerben.\n overlapPrevMs: meta.overlapPrevMs,\n });\n // Várjunk a korábbi chunk-ok emit-jeinek befejeződésére, mielőtt mi emitelünk.\n // Transzkripció már megtörtént — csak az emit van sorrendesítve.\n await prevEmitQueue;\n if (res.ok === false) {\n // non_speech: a szegmensben nem volt felismerhető beszéd — nem hiba, de jelezzük a consumer-nek\n // hogy a szegmens feldolgozódott (isFinal propagálás a soron következő szegmensekhez).\n this.transcriptSegmentReady.emit({\n text: '',\n isFinal: meta.isFinal,\n overlapPrevMs: meta.overlapPrevMs,\n });\n return;\n }\n const success: CCAP_TranscribeSuccess_Response = res;\n if (success.qaFailed === true) {\n const qfm: string = success.qaFailureMessage?.trim() ?? '';\n if (qfm.length > 0) {\n this.globalError_CS.showError(new Error(qfm), 'voice-stt-qa');\n }\n }\n const text: string =\n (success.correctedTranscript != null && success.correctedTranscript.trim().length > 0)\n ? success.correctedTranscript.trim()\n : (success.transcript ?? '').trim();\n // Csak usedQa=true eseten frissitjuk — parhuzamos chunk-oknal a QA nelkuli chunk ne torolje\n // az elozo chunk QA eredmenyet. \"Utolso QA eredmeny\" = utolso QA-t hasznalo chunk eredmenye.\n if (\n success.usedQa === true\n && (success.transcript ?? '').trim().length > 0\n && (success.correctedTranscript ?? '').trim().length > 0\n ) {\n this.lastQaTransformation_$.set({\n original: (success.transcript ?? '').trim(),\n corrected: (success.correctedTranscript ?? '').trim(),\n explanation: (success.qaExplanation ?? '').trim() || undefined,\n input: success.qaInput,\n });\n }\n if (text) {\n this.transcriptReady.emit(text);\n this.transcriptSegmentReady.emit({\n text: text,\n isFinal: meta.isFinal,\n overlapPrevMs: meta.overlapPrevMs,\n });\n }\n } catch (err: unknown) {\n this.globalError_CS.showError(err, 'ccap-voice-record-button');\n } finally {\n // Emit-slot mindig fel kell oldani — különben a következő chunk emit-je blokkolódik.\n releaseEmitSlot();\n this.pendingTranscriptionCount--;\n if (this.pendingTranscriptionCount <= 0) {\n this.pendingTranscriptionCount = 0;\n this.busy_$.set(false);\n }\n }\n }\n\n /** Felvétel állapot (gomb szöveghez). */\n readonly recordStateLabel_$ = computed(\n (): string =>\n this.soundRecorder_CS.state_$() === CCAP_SoundRecorderState_State.stopped\n ? 'Felvétel'\n : 'Stop',\n );\n\n readonly isRecordActive_$ = computed((): boolean => {\n const s: CCAP_SoundRecorderState_State = this.soundRecorder_CS.state_$();\n return (\n s === CCAP_SoundRecorderState_State.standby\n || s === CCAP_SoundRecorderState_State.running\n );\n });\n\n readonly isRecording_$ = computed(\n (): boolean => this.soundRecorder_CS.state_$() === CCAP_SoundRecorderState_State.running,\n );\n\n /** Felvétel gomb aria-label: felvétel közben „Stop\"; feldolgozás alatt a gomb új felvételt indít (REQ-VO-002). */\n readonly recordButtonAriaLabel_$ = computed((): string => {\n const unavail: string | null = this.mediaUnavailable_$();\n if (unavail) return unavail;\n if (this.isRecordActive_$()) return 'Stop';\n return this.busy_$() ? 'Új felvétel (feldolgozás folyamatban)' : 'Felvétel';\n });\n\n /** Felvétel gomb title (tooltip): ugyanaz mint aria-label; feldolgozás alatt explicit utalás, hogy új felvétel indítható. */\n readonly recordButtonTitle_$ = computed((): string => {\n const unavail: string | null = this.mediaUnavailable_$();\n if (unavail) return unavail;\n if (this.isRecordActive_$()) return 'Stop';\n return this.busy_$() ? 'Új felvétel — előző feldolgozás folyamatban' : 'Felvétel';\n });\n}\n", "@if (compactLayout()) {\n <!-- Compact layout: beállítás + infó gombok a rekordgomb FÖLÉ -->\n <div class=\"flex flex-col items-center gap-1\">\n <div class=\"flex items-center gap-2\">\n <button type=\"button\"\n (click)=\"toggleSettings(); $event.stopPropagation()\"\n class=\"w-5 h-5 rounded-full flex items-center justify-center\n bg-neutral-900 border-2 border-neonDefault text-neonCyan\n hover:border-neonCyan hover:shadow-neon-glow-cyan transition-all duration-200\n focus:outline-none focus:ring-2 focus:ring-neonCyan focus:ring-offset-2 focus:ring-offset-neutral-900\"\n aria-label=\"Beállítások\"\n title=\"Beállítások\">\n <svg class=\"w-2.5 h-2.5 shrink-0\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\n <path d=\"M12 15a3 3 0 1 0 0-6 3 3 0 0 0 0 6Z\" />\n <path d=\"M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z\" />\n </svg>\n </button>\n <button type=\"button\"\n (click)=\"toggleInfo(); $event.stopPropagation()\"\n class=\"w-5 h-5 rounded-full flex items-center justify-center\n bg-neutral-900 border-2 transition-all duration-200\n focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-offset-neutral-900\"\n [class.border-neonDefault]=\"!lastQaTextWasModified_$()\"\n [class.text-neonCyan]=\"!lastQaTextWasModified_$()\"\n [class.hover:border-neonCyan]=\"!lastQaTextWasModified_$()\"\n [class.hover:shadow-neon-glow-cyan]=\"!lastQaTextWasModified_$()\"\n [class.focus:ring-neonCyan]=\"!lastQaTextWasModified_$()\"\n [class.border-neonAmber]=\"lastQaTextWasModified_$()\"\n [class.text-neonAmber]=\"lastQaTextWasModified_$()\"\n [class.shadow-neon-glow-orange]=\"lastQaTextWasModified_$()\"\n [class.hover:border-neonAmber]=\"lastQaTextWasModified_$()\"\n [class.hover:shadow-neon-glow-orange]=\"lastQaTextWasModified_$()\"\n [class.focus:ring-neonAmber]=\"lastQaTextWasModified_$()\"\n [attr.aria-label]=\"lastQaTextWasModified_$()\n ? 'Utolsó QA eredmény — a szöveg módosult'\n : 'Utolsó QA eredmény'\"\n [attr.title]=\"lastQaTextWasModified_$()\n ? 'Utolsó QA eredmény — a szöveg módosult (részletek)'\n : 'Utolsó QA eredmény'\">\n <svg class=\"w-2.5 h-2.5 shrink-0\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"M12 16v-4\" />\n <path d=\"M12 8h.01\" />\n </svg>\n </button>\n </div>\n <button type=\"button\"\n (click)=\"toggleRecord()\"\n [disabled]=\"mediaUnavailable_$() !== null\"\n class=\"flex items-center justify-center min-w-[44px] min-h-[44px] w-10 h-10 rounded-full shrink-0\n bg-neutral-900 border-2 text-white transition-all duration-200 disabled:opacity-50\n border-neonDefault hover:border-neonCyan hover:shadow-neon-glow-cyan\n focus:outline-none focus:ring-2 focus:ring-neonCyan focus:ring-offset-2 focus:ring-offset-neutral-900\"\n [class.border-neonCyan]=\"isRecordActive_$() || busy_$()\"\n [class.shadow-neon-glow-cyan]=\"isRecordActive_$() || busy_$()\"\n [class.animate-pulse]=\"isRecording_$()\"\n [attr.aria-label]=\"recordButtonAriaLabel_$()\"\n [attr.title]=\"recordButtonTitle_$()\">\n @if (busy_$() && !isRecordActive_$()) {\n <span class=\"inline-block w-5 h-5 shrink-0 animate-spin rounded-full border-2 border-neonCyan/40 border-t-neonCyan\"\n aria-hidden=\"true\"></span>\n } @else {\n <div class=\"flex flex-col items-center gap-0.5 shrink-0\">\n @if (isRecordActive_$()) {\n <div class=\"relative w-2 h-6 rounded-sm bg-neutral-800 overflow-hidden\"\n aria-hidden=\"true\">\n <div class=\"absolute inset-x-0 bottom-0 bg-neonCyan transition-[height] duration-75\"\n [style.height.%]=\"volumePercent_$()\"></div>\n <div class=\"absolute inset-x-0 h-0.5 bg-neonAmber rounded-sm z-10\"\n style=\"bottom: 5%;\"></div>\n </div>\n }\n <svg class=\"w-5 h-5 shrink-0 text-neonCyan\"\n viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\n <path d=\"M12 2a3 3 0 0 1 3 3v7a3 3 0 0 1-6 0V5a3 3 0 0 1 3-3Z\" />\n <path d=\"M19 10v2a7 7 0 0 1-14 0v-2\" />\n <line x1=\"12\" y1=\"19\" x2=\"12\" y2=\"22\" />\n </svg>\n </div>\n }\n </button>\n @if (mediaUnavailable_$(); as reason) {\n <!-- REQ-UI-VHTTPS-001: látható warning-blokk, ha nincs secure context / nem elérhető a mikrofon. -->\n <p class=\"text-[11px] text-amber-300 leading-tight max-w-[180px] text-center\"\n [attr.aria-live]=\"'polite'\">\n <span aria-hidden=\"true\" class=\"mr-1\">⚠</span>{{ reason }}\n </p>\n }\n </div>\n} @else {\n <!-- Default layout: beállítás balra, rekordgomb középen, infó jobbra (absolute) -->\n <div class=\"relative inline-flex\">\n <button type=\"button\"\n (click)=\"toggleRecord()\"\n [disabled]=\"mediaUnavailable_$() !== null\"\n class=\"flex items-center justify-center min-w-[44px] min-h-[44px] w-10 h-10 rounded-full shrink-0\n bg-neutral-900 border-2 text-white transition-all duration-200 disabled:opacity-50\n border-neonDefault hover:border-neonCyan hover:shadow-neon-glow-cyan\n focus:outline-none focus:ring-2 focus:ring-neonCyan focus:ring-offset-2 focus:ring-offset-neutral-900\"\n [class.border-neonCyan]=\"isRecordActive_$() || busy_$()\"\n [class.shadow-neon-glow-cyan]=\"isRecordActive_$() || busy_$()\"\n [class.animate-pulse]=\"isRecording_$()\"\n [attr.aria-label]=\"recordButtonAriaLabel_$()\"\n [attr.title]=\"recordButtonTitle_$()\">\n @if (busy_$() && !isRecordActive_$()) {\n <span class=\"inline-block w-5 h-5 shrink-0 animate-spin rounded-full border-2 border-neonCyan/40 border-t-neonCyan\"\n aria-hidden=\"true\"></span>\n } @else {\n <div class=\"flex flex-col items-center gap-0.5 shrink-0\">\n @if (isRecordActive_$()) {\n <div class=\"relative w-2 h-6 rounded-sm bg-neutral-800 overflow-hidden\"\n aria-hidden=\"true\">\n <div class=\"absolute inset-x-0 bottom-0 bg-neonCyan transition-[height] duration-75\"\n [style.height.%]=\"volumePercent_$()\"></div>\n <div class=\"absolute inset-x-0 h-0.5 bg-neonAmber rounded-sm z-10\"\n style=\"bottom: 5%;\"></div>\n </div>\n }\n <svg class=\"w-5 h-5 shrink-0 text-neonCyan\"\n viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\n <path d=\"M12 2a3 3 0 0 1 3 3v7a3 3 0 0 1-6 0V5a3 3 0 0 1 3-3Z\" />\n <path d=\"M19 10v2a7 7 0 0 1-14 0v-2\" />\n <line x1=\"12\" y1=\"19\" x2=\"12\" y2=\"22\" />\n </svg>\n </div>\n }\n </button>\n <button type=\"button\"\n (click)=\"toggleSettings(); $event.stopPropagation()\"\n class=\"absolute right-full mr-4 top-1/2 -translate-y-1/2 w-5 h-5 rounded-full flex items-center justify-center\n bg-neutral-900 border-2 border-neonDefault text-neonCyan\n hover:border-neonCyan hover:shadow-neon-glow-cyan transition-all duration-200\n focus:outline-none focus:ring-2 focus:ring-neonCyan focus:ring-offset-2 focus:ring-offset-neutral-900\"\n aria-label=\"Beállítások\"\n title=\"Beállítások\">\n <svg class=\"w-2.5 h-2.5 shrink-0\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\n <path d=\"M12 15a3 3 0 1 0 0-6 3 3 0 0 0 0 6Z\" />\n <path d=\"M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z\" />\n </svg>\n </button>\n <button type=\"button\"\n (click)=\"toggleInfo(); $event.stopPropagation()\"\n class=\"absolute left-full ml-4 top-1/2 -translate-y-1/2 w-5 h-5 rounded-full flex items-center justify-center\n bg-neutral-900 border-2 transition-all duration-200\n focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-offset-neutral-900\"\n [class.border-neonDefault]=\"!lastQaTextWasModified_$()\"\n [class.text-neonCyan]=\"!lastQaTextWasModified_$()\"\n [class.hover:border-neonCyan]=\"!lastQaTextWasModified_$()\"\n [class.hover:shadow-neon-glow-cyan]=\"!lastQaTextWasModified_$()\"\n [class.focus:ring-neonCyan]=\"!lastQaTextWasModified_$()\"\n [class.border-neonAmber]=\"lastQaTextWasModified_$()\"\n [class.text-neonAmber]=\"lastQaTextWasModified_$()\"\n [class.shadow-neon-glow-orange]=\"lastQaTextWasModified_$()\"\n [class.hover:border-neonAmber]=\"lastQaTextWasModified_$()\"\n [class.hover:shadow-neon-glow-orange]=\"lastQaTextWasModified_$()\"\n [class.focus:ring-neonAmber]=\"lastQaTextWasModified_$()\"\n [attr.aria-label]=\"lastQaTextWasModified_$()\n ? 'Utolsó QA eredmény — a szöveg módosult'\n : 'Utolsó QA eredmény'\"\n [attr.title]=\"lastQaTextWasModified_$()\n ? 'Utolsó QA eredmény — a szöveg módosult (részletek)'\n : 'Utolsó QA eredmény'\">\n <svg class=\"w-2.5 h-2.5 shrink-0\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"M12 16v-4\" />\n <path d=\"M12 8h.01\" />\n </svg>\n </button>\n </div>\n @if (mediaUnavailable_$(); as reason) {\n <!-- REQ-UI-VHTTPS-001: látható warning-blokk, ha nincs secure context / nem elérhető a mikrofon. -->\n <p class=\"text-[11px] text-amber-300 leading-tight max-w-[240px] mt-1\"\n [attr.aria-live]=\"'polite'\">\n <span aria-hidden=\"true\" class=\"mr-1\">⚠</span>{{ reason }}\n </p>\n }\n}\n\n<app-s-modal [isOpen]=\"settingsOpen_$()\"\n [title]=\"'Voice Input beállítások'\"\n [maxWidth]=\"'lg'\"\n [zIndex]=\"'40'\"\n [bodyFlexColumn]=\"true\"\n (closed)=\"settingsOpen_$.set(false)\">\n <!-- Teljes body egy scroll region: mobil-on a hosszú promptok nem lógnak ki a max-h-[90vh] panel alól. -->\n <div class=\"flex flex-col flex-1 min-h-0 w-full overflow-y-auto overflow-x-hidden overscroll-y-contain\">\n <div class=\"flex flex-col gap-2 shrink-0\">\n <label class=\"flex items-center gap-2 cursor-pointer select-none\">\n <input type=\"checkbox\" [(ngModel)]=\"settingsQaEnabled\" name=\"settingsQaEnabled\" />\n <span class=\"text-sm text-neutral-300\">STT QA</span>\n </label>\n <label class=\"flex items-center gap-2 cursor-pointer select-none\">\n <input type=\"checkbox\"\n name=\"autoSendAfterVoice\"\n [ngModel]=\"voiceInputUi_DS.autoSendAfterVoice_$()\"\n (ngModelChange)=\"handleAutoSendAfterVoiceChange($event)\" />\n <span class=\"text-sm text-neutral-300\">Send immediately after voice (Mimik-style)</span>\n </label>\n </div>\n\n @if (qaSettings_$(); as qaSettings) {\n <div class=\"mt-3 pt-3 border-t border-neonDefault flex flex-col gap-3 shrink-0\">\n <div class=\"shrink-0\">\n <p class=\"text-xs font-medium text-neutral-400 mb-1\">System prompt (LLM-nek)</p>\n <p class=\"text-xs text-neutral-300 whitespace-pre-wrap break-words\">{{ qaSettings.systemPrompt }}</p>\n </div>\n <div class=\"shrink-0\">\n <p class=\"text-xs font-medium text-neutral-400 mb-1\">\n User prompt sablon (ide fűződik be a felvétel adata)\n </p>\n <p class=\"text-xs text-neutral-300 whitespace-pre-wrap break-words font-mono\">\n {{ qaSettings.userPromptTemplate }}\n </p>\n <p class=\"text-[10px] text-neonAmber mt-1\">\n Placeholderek: {{ '{{TRANSCRIPT}}' }} = nyers szöveg, {{ '{{NOTE_CONTEXT}}' }} = jegyzet,\n {{ '{{CONFUSION_MAP}}' }} = az alábbi elírás lista JSON-ban.\n </p>\n </div>\n <div class=\"shrink-0\">\n <p class=\"text-xs font-medium text-neutral-400 mb-1\">STT QA provider és modell</p>\n @if (qaProviderName.trim()) {\n <p class=\"text-[10px] text-neutral-500 mb-1\">\n Override: {{ qaProviderDisplayLabel_$() }} / {{ qaModelName || '—' }}\n (globál: {{ defaultLlmProviderDisplayLabel_$() || '—' }} / {{ defaultLlmModel_$() || '—' }}).\n </p>\n } @else {\n <p class=\"text-[10px] text-neutral-500 mb-1\">\n Nincs beállítva – használt: {{ defaultLlmProviderDisplayLabel_$() || '—' }} /\n {{ defaultLlmModel_$() || '—' }} (globál).\n </p>\n }\n <div class=\"flex flex-wrap gap-2 items-center\">\n <select [(ngModel)]=\"qaProviderName\"\n (ngModelChange)=\"onQaProviderChange()\"\n name=\"qaProviderName\"\n class=\"px-2 py-1 text-xs bg-neutral-800 border border-neonDefault rounded text-neutral-200 min-w-[120px]\">\n <option value=\"\">— default —</option>\n @for (opt of llmProviderSelectOptions_$(); track opt.value) {\n <option [value]=\"opt.value\">{{ opt.label }}</option>\n }\n </select>\n @if (qaShowModelSelect_$()) {\n <select [(ngModel)]=\"qaModelName\"\n name=\"qaModelName\"\n class=\"px-2 py-1 text-xs bg-neutral-800 border border-neonDefault rounded text-neutral-200 min-w-[140px]\">\n <option value=\"\">— default —</option>\n @for (m of qaModelsForProvider_$(); track m) {\n <option [value]=\"m\">{{ m }}</option>\n }\n </select>\n } @else {\n <input type=\"text\"\n [(ngModel)]=\"qaModelName\"\n name=\"qaModelNameText\"\n placeholder=\"Modell id (lista nem elérhető ehhez a providerhez)\"\n class=\"px-2 py-1 text-xs bg-neutral-800 border border-neonDefault rounded text-neutral-200 min-w-[140px] font-mono\" />\n }\n </div>\n @if (qaModelsListFetchError_$().trim()) {\n <p class=\"text-[10px] text-amber-300/90 mt-1\">{{ qaModelsListFetchError_$() }}</p>\n }\n </div>\n <div class=\"flex flex-col shrink-0\">\n <p class=\"text-xs font-medium text-neutral-400 mb-1 shrink-0\">\n Tipikus elírások / tipók (confusion map) – ezekre javít a QA\n </p>\n <div class=\"space-y-1.5 rounded border border-neonDefault/50 bg-neutral-800/20 p-2\">\n @for (entry of confusionMapList_$(); track $index; let i = $index) {\n <div class=\"flex items-center gap-2\">\n <input type=\"text\"\n [value]=\"entry.from\"\n (input)=\"updateConfusionFrom(i, $any($event.target).value)\"\n placeholder=\"Elírás / félrehallás\"\n class=\"flex-1 min-w-0 px-2 py-1 text-xs bg-neutral-800 border border-neonDefault rounded\n text-neutral-200 placeholder-neutral-500\" />\n <span class=\"text-neutral-500 shrink-0\">→</span>\n <input type=\"text\"\n [value]=\"entry.to\"\n (input)=\"updateConfusionTo(i, $any($event.target).value)\"\n placeholder=\"Helyes forma\"\n class=\"flex-1 min-w-0 px-2 py-1 text-xs bg-neutral-800 border border-neonDefault rounded\n text-neutral-200 placeholder-neutral-500\" />\n <button type=\"button\"\n (click)=\"removeConfusionEntry(i)\"\n class=\"shrink-0 p-1 text-neutral-500 hover:text-neonRed transition-colors\"\n aria-label=\"Sor törlése\"\n title=\"Sor törlése\">\n <span class=\"sr-only\">Törlés</span>\n <svg class=\"w-3.5 h-3.5\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n <path d=\"M18 6L6 18M6 6l12 12\" />\n </svg>\n </button>\n </div>\n }\n </div>\n <div class=\"flex flex-wrap gap-2 items-center shrink-0 mt-2\">\n <button type=\"button\"\n (click)=\"addConfusionEntry()\"\n class=\"px-2 py-1 text-xs border border-neonDefault rounded text-neutral-400\n hover:border-neonCyan hover:text-neonCyan transition-colors\">\n + Sor hozzáadása\n </button>\n <button type=\"button\"\n (click)=\"saveQaSettings()\"\n [disabled]=\"qaSettingsSaving_$()\"\n class=\"px-2 py-1 text-xs border border-neonCyan rounded text-neonCyan\n hover:shadow-neon-glow-cyan disabled:opacity-50 transition-colors\">\n {{ qaSettingsSaving_$() ? 'Mentés…' : 'QA beállítások mentése' }}\n </button>\n </div>\n </div>\n </div>\n } @else if (qaSettingsLoading_$()) {\n <p class=\"mt-3 pt-3 border-t border-neonDefault text-xs text-neutral-400\">QA beállítások betöltése…</p>\n } @else {\n <p class=\"mt-3 pt-3 border-t border-neonDefault text-xs text-neutral-500\">\n A QA beállítások betöltése sikertelen.\n </p>\n <button type=\"button\"\n (click)=\"loadQaSettings()\"\n class=\"mt-1.5 px-2 py-1 text-xs border border-neonDefault rounded text-neutral-400\n hover:border-neonCyan hover:text-neonCyan transition-colors\">\n Újra betöltés\n </button>\n }\n </div>\n <div modal-footer class=\"shrink-0 px-4 py-3 border-t border-neonDefault\">\n <button type=\"button\"\n class=\"w-full px-3 py-1.5 text-sm border border-neonCyan rounded text-neutral-300\n hover:shadow-neon-glow-cyan transition-colors\"\n (click)=\"settingsOpen_$.set(false)\">\n Bezárás\n </button>\n </div>\n</app-s-modal>\n\n<app-s-modal [isOpen]=\"infoOpen_$()\"\n [title]=\"'Utolsó QA eredmény'\"\n [maxWidth]=\"'md'\"\n [zIndex]=\"'40'\"\n (closed)=\"infoOpen_$.set(false)\">\n @if (lastQaTransformation_$(); as qa) {\n <div class=\"space-y-2 text-sm\">\n @if (lastQaWordDiffSegments_$().length > 0) {\n <div class=\"rounded-md border border-neonAmber/45 bg-neutral-950/95 p-2.5 mb-1\">\n <p class=\"text-[10px] font-semibold uppercase tracking-wide text-neonAmber/90 mb-1.5\">\n Változások (kiemelve)\n </p>\n <p class=\"text-xs leading-relaxed whitespace-pre-wrap break-words\">\n @for (seg of lastQaWordDiffSegments_$(); track seg.id) {\n @if (seg.kind === SttQaDiffKind.equal) {\n <span class=\"text-neutral-300\">{{ seg.text }}</span>\n } @else if (seg.kind === SttQaDiffKind.removed) {\n <span class=\"mx-0.5 inline rounded px-0.5 text-red-300/95 line-through decoration-red-400/85\n bg-red-950/50 border border-red-900/45\">{{ seg.text }}</span>\n } @else {\n <span class=\"mx-0.5 inline rounded px-0.5 text-neonAmber bg-amber-950/55 border border-neonAmber/50\n shadow-[0_0_10px_rgb(251_191_36/0.28)]\">{{ seg.text }}</span>\n }\n }\n </p>\n <p class=\"text-[10px] text-neutral-500 mt-1.5 leading-snug\">\n Áthúzva: nyers STT; kiemelve: javított szöveg. Alább a teljes két változat.\n </p>\n </div>\n }\n <p class=\"font-medium text-neonAmber\">Volt módosítás: igen.</p>\n <p class=\"text-neutral-400 text-xs\">Eredeti (nyers STT):</p>\n <p class=\"text-neutral-200 break-words\">{{ qa.original }}</p>\n <p class=\"text-neutral-400 text-xs mt-2\">Javított:</p>\n <p class=\"text-neutral-200 break-words\">{{ qa.corrected }}</p>\n @if (qa.explanation) {\n <p class=\"text-neutral-400 text-xs mt-2\">Magyarázat:</p>\n <p class=\"text-neutral-300 break-words\">{{ qa.explanation }}</p>\n }\n </div>\n } @else {\n <p class=\"text-xs text-neutral-500\">\n Még nem volt STT QA javítás.\n </p>\n }\n <div modal-footer class=\"shrink-0 px-4 py-3 border-t border-neonDefault\">\n <button type=\"button\"\n class=\"w-full px-3 py-1.5 text-sm border border-neonCyan rounded text-neutral-300\n hover:shadow-neon-glow-cyan transition-colors\"\n (click)=\"infoOpen_$.set(false)\">\n Bezárás\n </button>\n </div>\n</app-s-modal>\n"],
5
+ "mappings": "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",
6
+ "names": ["CCAP_VOICE_INPUT_AUTO_SEND_AFTER_VOICE_KEY", "VNP_InputUi_DataService", "autoSendAfterVoice_$", "signal", "readAutoSendAfterVoiceFromStorage", "setAutoSendAfterVoice", "value", "set", "Shr_LocalStoragePersistence_Util", "writeString", "String", "readString", "factory", "\u0275fac", "providedIn", "CCAP_SttQaWordDiffSegmentKind_Type", "CCAP_SttQaTextDiff_Util", "tokenize", "input", "trimmed", "length", "parts", "split", "out", "i", "p", "push", "mergeAndAssignIds", "raw", "merged", "cur", "last", "undefined", "kind", "text", "withIds", "k", "m", "id", "buildWordDiff", "oldText", "newText", "a", "b", "n", "dp", "row", "j", "up", "left", "rawBackwards", "CCAP_SttQaWordDiffSegmentKind_Type", "equal", "added", "removed", "rawForward", "\u0275\u0275element", "\u0275\u0275elementStart", "\u0275\u0275elementEnd", "\u0275\u0275advance", "\u0275\u0275styleProp", "ctx_r1", "volumePercent_$", "\u0275\u0275template", "CCAP_VoiceRecordButton_Component_Conditional_0_Conditional_13_Conditional_1_Template", "\u0275\u0275conditional", "isRecordActive_$", "\u0275\u0275text", "\u0275\u0275textInterpolate1", "ctx", "\u0275\u0275listener", "$event", "i0", "\u0275\u0275restoreView", "_r1", "\u0275\u0275nextContext", "toggleSettings", "\u0275\u0275resetView", "stopPropagation", "toggleInfo", "toggleRecord", "CCAP_VoiceRecordButton_Component_Conditional_0_Conditional_12_Template", "CCAP_VoiceRecordButton_Component_Conditional_0_Conditional_13_Template", "CCAP_VoiceRecordButton_Component_Conditional_0_Conditional_14_Template", "\u0275\u0275classProp", "lastQaTextWasModified_$", "busy_$", "isRecording_$", "\u0275\u0275property", "mediaUnavailable_$", "tmp_21_0", "CCAP_VoiceRecordButton_Component_Conditional_1_Conditional_3_Conditional_1_Template", "_r3", "CCAP_VoiceRecordButton_Component_Conditional_1_Conditional_2_Template", "CCAP_VoiceRecordButton_Component_Conditional_1_Conditional_3_Template", "CCAP_VoiceRecordButton_Component_Conditional_1_Conditional_13_Template", "\u0275\u0275textInterpolate4", "qaProviderDisplayLabel_$", "qaModelName", "defaultLlmProviderDisplayLabel_$", "defaultLlmModel_$", "\u0275\u0275textInterpolate2", "opt_r5", "value", "\u0275\u0275textInterpolate", "label", "m_r7", "\u0275\u0275twoWayListener", "_r6", "\u0275\u0275twoWayBindingSet", "\u0275\u0275repeaterCreate", "CCAP_VoiceRecordButton_Component_Conditional_13_Conditional_24_For_4_Template", "\u0275\u0275repeaterTrackByIdentity", "\u0275\u0275twoWayProperty", "\u0275\u0275repeater", "qaModelsForProvider_$", "_r8", "qaModelsListFetchError_$", "\u0275$index_195_r10", "_r9", "$index", "updateConfusionFrom", "target", "updateConfusionTo", "removeConfusionEntry", "entry_r11", "from", "to", "CCAP_VoiceRecordButton_Component_Conditional_13_Conditional_16_Template", "CCAP_VoiceRecordButton_Component_Conditional_13_Conditional_17_Template", "_r4", "qaProviderName", "onQaProviderChange", "CCAP_VoiceRecordButton_Component_Conditional_13_For_23_Template", "_forTrack0", "CCAP_VoiceRecordButton_Component_Conditional_13_Conditional_24_Template", "CCAP_VoiceRecordButton_Component_Conditional_13_Conditional_25_Template", "CCAP_VoiceRecordButton_Component_Conditional_13_Conditional_26_Template", "CCAP_VoiceRecordButton_Component_Conditional_13_For_32_Template", "\u0275\u0275repeaterTrackByIndex", "addConfusionEntry", "saveQaSettings", "qaSettings_r12", "systemPrompt", "userPromptTemplate", "\u0275\u0275textInterpolate3", "trim", "llmProviderSelectOptions_$", "qaShowModelSelect_$", "confusionMapList_$", "qaSettingsSaving_$", "_r13", "loadQaSettings", "seg_r14", "text", "CCAP_VoiceRecordButton_Component_Conditional_20_Conditional_1_For_5_Conditional_0_Template", "CCAP_VoiceRecordButton_Component_Conditional_20_Conditional_1_For_5_Conditional_1_Template", "CCAP_VoiceRecordButton_Component_Conditional_20_Conditional_1_For_5_Conditional_2_Template", "kind", "SttQaDiffKind", "equal", "removed", "CCAP_VoiceRecordButton_Component_Conditional_20_Conditional_1_For_5_Template", "_forTrack1", "lastQaWordDiffSegments_$", "qa_r15", "explanation", "CCAP_VoiceRecordButton_Component_Conditional_20_Conditional_1_Template", "CCAP_VoiceRecordButton_Component_Conditional_20_Conditional_12_Template", "length", "original", "corrected", "CCAP_VoiceRecordButton_Component", "globalError_CS", "inject", "CCAP_GlobalError_ControlService", "soundRecorder_CS", "CCAP_SoundRecorder_ControlService", "voiceSttQaUi_DS", "VNP_SttQaUi_DataService", "voiceInputUi_DS", "VNP_InputUi_DataService", "qaEnabled", "input", "undefined", "compactLayout", "transcriptReady", "EventEmitter", "transcriptSegmentReady", "signal", "pendingTranscriptionCount", "emitChain", "Promise", "resolve", "volume_$", "isQaEnabledFromSettings_$", "settingsOpen_$", "qaSettings_$", "qaSettingsLoading_$", "settingsQaEnabled", "lastQaTransformation_$", "infoOpen_$", "defaultLlmProvider_$", "computed", "Math", "min", "t", "CCAP_SttQaTextDiff_Util", "buildWordDiff", "CCAP_SttQaWordDiffSegmentKind_Type", "opts", "id", "find", "o", "ngOnInit", "availability", "CCAP_MediaRecording_Util", "getMediaRecordingAvailability", "supported", "reason", "set", "getMediaUnavailableMessage", "reportErrorOnly", "message", "getMediaUnavailableReportMessage", "source", "setOnChunk", "blob", "meta", "onChunk", "setOnVolume", "setOnError", "err", "showError", "ngOnDestroy", "stopListening", "__async", "state_$", "CCAP_SoundRecorderState_State", "stopped", "loadQaEnabledOnce", "startListening", "fetchQaEnabledFlag", "handleAutoSendAfterVoiceChange", "setAutoSendAfterVoice", "update", "v", "state", "loadSttQaSettingsPanelState", "res", "qa", "confusionMap", "providerName", "modelName", "llmProviderSelectOptions", "defaultLlmProvider", "defaultLlmModel", "qaModelsForProvider", "qaModelsListFetchError", "loadQaModelsForProvider", "providerId", "out", "fetchLlmModelsListForSttQa", "models", "errorMessage", "list", "index", "filter", "_", "i", "next", "normalizeConfusionMapEntries", "saveVoiceNotesQaSettings", "current", "onEscape", "effectiveQaEnabled_$", "prevEmitQueue", "releaseEmitSlot", "transcribeVoiceChunk", "mimeType", "filename", "noteContext", "skipClassification", "overlapPrevMs", "ok", "emit", "isFinal", "success", "qaFailed", "qfm", "qaFailureMessage", "Error", "correctedTranscript", "transcript", "usedQa", "qaExplanation", "qaInput", "recordStateLabel_$", "s", "standby", "running", "recordButtonAriaLabel_$", "unavail", "recordButtonTitle_$", "selectors", "hostBindings", "rf", "\u0275\u0275resolveDocument", "CCAP_VoiceRecordButton_Component_Conditional_0_Template", "CCAP_VoiceRecordButton_Component_Conditional_1_Template", "CCAP_VoiceRecordButton_Component_Conditional_13_Template", "CCAP_VoiceRecordButton_Component_Conditional_14_Template", "CCAP_VoiceRecordButton_Component_Conditional_15_Template", "CCAP_VoiceRecordButton_Component_Conditional_20_Template", "CCAP_VoiceRecordButton_Component_Conditional_21_Template", "autoSendAfterVoice_$", "tmp_8_0", "tmp_13_0", "FormsModule", "NgSelectOption", "\u0275NgSelectMultipleOption", "DefaultValueAccessor", "CheckboxControlValueAccessor", "SelectControlValueAccessor", "NgControlStatus", "NgModel", "S_Modal_Component", "encapsulation"]
7
+ }
@@ -1,2 +1,2 @@
1
- import{a as g}from"./chunk-C4JDDOQR.js";import{a as u}from"./chunk-6GSTJE3R.js";import{L as c,t as l}from"./chunk-SLSTIBOT.js";import{C as d,aa as n,k as i,p as r,y as a}from"./chunk-TBMJSIBB.js";var D=(()=>{class o{documents_$=n([]);selectedDocument_$=n(null);selectedChunkCount_$=n(0);isLoading_$=n(!1);uploadStatus_$=n("idle");error_$=n(null);defaultCorpusDocumentId_$=n("");registryEntries_$=n([]);registryLoading_$=n(!1);selectedRegistryEntryId_$=n("");indexingStatus_$=n(null);indexingActive_$=n(!1);indexingPollInterval=null;docLibrary_AS=d(g);erg_AS=d(u);settings_AS=d(c);loadDocuments(){return i(this,null,function*(){this.isLoading_$.set(!0),this.error_$.set(null);try{let e=yield r(this.docLibrary_AS.listDocuments());this.documents_$.set(e.items)}catch(e){let t=e instanceof Error?e.message:"Dokumentum-lista bet\xF6lt\xE9se sikertelen.";this.error_$.set(t)}finally{this.isLoading_$.set(!1)}})}loadDocumentDetail(e){return i(this,null,function*(){this.isLoading_$.set(!0),this.error_$.set(null);try{let t=yield r(this.docLibrary_AS.getDocument({documentId:e.documentId}));this.selectedDocument_$.set(t.document),this.selectedChunkCount_$.set(t.chunkCount)}catch(t){let s=t instanceof Error?t.message:"Dokumentum detail bet\xF6lt\xE9se sikertelen.";this.error_$.set(s)}finally{this.isLoading_$.set(!1)}})}uploadDocument(e){return i(this,null,function*(){this.uploadStatus_$.set("uploading"),this.error_$.set(null);let t=new FormData;t.append("file",e.file),t.append("name",e.name),e.description!==void 0&&e.description.trim()!==""&&t.append("description",e.description.trim());try{let s=yield r(this.docLibrary_AS.uploadDocument({formData:t}));return this.uploadStatus_$.set("done"),s}catch(s){let m=s instanceof Error?s.message:"Dokumentum felt\xF6lt\xE9se sikertelen.";throw this.error_$.set(m),this.uploadStatus_$.set("error"),s}})}deleteDocument(e){return i(this,null,function*(){this.error_$.set(null);try{yield r(this.docLibrary_AS.deleteDocument({documentId:e.documentId}));let t=this.documents_$();this.documents_$.set(t.filter(s=>s.id!==e.documentId))}catch(t){let s=t instanceof Error?t.message:"Dokumentum t\xF6rl\xE9se sikertelen.";throw this.error_$.set(s),t}})}loadRegistryEntries(){return i(this,null,function*(){this.registryLoading_$.set(!0);try{let e=yield this.erg_AS.getList({enabled:!0});this.registryEntries_$.set(e.list)}catch(e){let t=e instanceof Error?e.message:"Registry lista bet\xF6lt\xE9se sikertelen.";this.error_$.set(t)}finally{this.registryLoading_$.set(!1)}})}startIndexing(e){return i(this,null,function*(){this.error_$.set(null);try{yield r(this.docLibrary_AS.startIndexing({documentId:e.documentId,registryEntryId:e.registryEntryId})),this.indexingActive_$.set(!0),this.startIndexingPolling({documentId:e.documentId,registryEntryId:e.registryEntryId})}catch(t){let s=t instanceof Error?t.message:"Indexel\xE9s ind\xEDt\xE1sa sikertelen.";throw this.error_$.set(s),t}})}loadIndexingStatus(e){return i(this,null,function*(){try{let t=yield r(this.docLibrary_AS.getIndexingStatus({documentId:e.documentId,registryEntryId:e.registryEntryId}));this.indexingStatus_$.set(t)}catch{this.indexingStatus_$.set(null)}})}startIndexingPolling(e){this.stopIndexingPolling();let t=1500;this.indexingPollInterval=setInterval(()=>{this.pollIndexingStatus(e)},t),this.pollIndexingStatus(e)}pollIndexingStatus(e){return i(this,null,function*(){try{let t=yield r(this.docLibrary_AS.getIndexingStatus({documentId:e.documentId,registryEntryId:e.registryEntryId}));this.indexingStatus_$.set(t),t.total>0&&t.pending===0&&this.stopIndexingPolling()}catch{this.stopIndexingPolling()}})}stopIndexingPolling(){this.indexingPollInterval!==null&&(clearInterval(this.indexingPollInterval),this.indexingPollInterval=null),this.indexingActive_$.set(!1)}ngOnDestroy(){this.stopIndexingPolling()}loadDefaultCorpusDocumentId(){return i(this,null,function*(){try{let e=yield this.settings_AS.getSection(l.modelTesting),t=typeof e.embeddingTestCorpusDocumentId=="string"?e.embeddingTestCorpusDocumentId:"";this.defaultCorpusDocumentId_$.set(t)}catch{}})}setDefaultCorpusDocumentId(e){return i(this,null,function*(){this.error_$.set(null);try{let t=yield this.settings_AS.getSection(l.modelTesting),s={testAnalysisProvider:t.testAnalysisProvider??"open-ai",testAnalysisModel:t.testAnalysisModel??"",embeddingTestCorpusDocumentId:e.documentId};yield this.settings_AS.saveSection(l.modelTesting,s),this.defaultCorpusDocumentId_$.set(e.documentId)}catch(t){let s=t instanceof Error?t.message:"Default corpus be\xE1ll\xEDt\xE1sa sikertelen.";throw this.error_$.set(s),t}})}static \u0275fac=function(t){return new(t||o)};static \u0275prov=a({token:o,factory:o.\u0275fac})}return o})();export{D as a};
2
- //# sourceMappingURL=chunk-PFBJ7ZHP.js.map
1
+ import{a as g}from"./chunk-QUD3BEHN.js";import{a as u}from"./chunk-F6VMAVI5.js";import{L as c,t as l}from"./chunk-Y6V4NGLU.js";import{C as d,aa as n,k as i,p as r,y as a}from"./chunk-TBMJSIBB.js";var D=(()=>{class o{documents_$=n([]);selectedDocument_$=n(null);selectedChunkCount_$=n(0);isLoading_$=n(!1);uploadStatus_$=n("idle");error_$=n(null);defaultCorpusDocumentId_$=n("");registryEntries_$=n([]);registryLoading_$=n(!1);selectedRegistryEntryId_$=n("");indexingStatus_$=n(null);indexingActive_$=n(!1);indexingPollInterval=null;docLibrary_AS=d(g);erg_AS=d(u);settings_AS=d(c);loadDocuments(){return i(this,null,function*(){this.isLoading_$.set(!0),this.error_$.set(null);try{let e=yield r(this.docLibrary_AS.listDocuments());this.documents_$.set(e.items)}catch(e){let t=e instanceof Error?e.message:"Dokumentum-lista bet\xF6lt\xE9se sikertelen.";this.error_$.set(t)}finally{this.isLoading_$.set(!1)}})}loadDocumentDetail(e){return i(this,null,function*(){this.isLoading_$.set(!0),this.error_$.set(null);try{let t=yield r(this.docLibrary_AS.getDocument({documentId:e.documentId}));this.selectedDocument_$.set(t.document),this.selectedChunkCount_$.set(t.chunkCount)}catch(t){let s=t instanceof Error?t.message:"Dokumentum detail bet\xF6lt\xE9se sikertelen.";this.error_$.set(s)}finally{this.isLoading_$.set(!1)}})}uploadDocument(e){return i(this,null,function*(){this.uploadStatus_$.set("uploading"),this.error_$.set(null);let t=new FormData;t.append("file",e.file),t.append("name",e.name),e.description!==void 0&&e.description.trim()!==""&&t.append("description",e.description.trim());try{let s=yield r(this.docLibrary_AS.uploadDocument({formData:t}));return this.uploadStatus_$.set("done"),s}catch(s){let m=s instanceof Error?s.message:"Dokumentum felt\xF6lt\xE9se sikertelen.";throw this.error_$.set(m),this.uploadStatus_$.set("error"),s}})}deleteDocument(e){return i(this,null,function*(){this.error_$.set(null);try{yield r(this.docLibrary_AS.deleteDocument({documentId:e.documentId}));let t=this.documents_$();this.documents_$.set(t.filter(s=>s.id!==e.documentId))}catch(t){let s=t instanceof Error?t.message:"Dokumentum t\xF6rl\xE9se sikertelen.";throw this.error_$.set(s),t}})}loadRegistryEntries(){return i(this,null,function*(){this.registryLoading_$.set(!0);try{let e=yield this.erg_AS.getList({enabled:!0});this.registryEntries_$.set(e.list)}catch(e){let t=e instanceof Error?e.message:"Registry lista bet\xF6lt\xE9se sikertelen.";this.error_$.set(t)}finally{this.registryLoading_$.set(!1)}})}startIndexing(e){return i(this,null,function*(){this.error_$.set(null);try{yield r(this.docLibrary_AS.startIndexing({documentId:e.documentId,registryEntryId:e.registryEntryId})),this.indexingActive_$.set(!0),this.startIndexingPolling({documentId:e.documentId,registryEntryId:e.registryEntryId})}catch(t){let s=t instanceof Error?t.message:"Indexel\xE9s ind\xEDt\xE1sa sikertelen.";throw this.error_$.set(s),t}})}loadIndexingStatus(e){return i(this,null,function*(){try{let t=yield r(this.docLibrary_AS.getIndexingStatus({documentId:e.documentId,registryEntryId:e.registryEntryId}));this.indexingStatus_$.set(t)}catch{this.indexingStatus_$.set(null)}})}startIndexingPolling(e){this.stopIndexingPolling();let t=1500;this.indexingPollInterval=setInterval(()=>{this.pollIndexingStatus(e)},t),this.pollIndexingStatus(e)}pollIndexingStatus(e){return i(this,null,function*(){try{let t=yield r(this.docLibrary_AS.getIndexingStatus({documentId:e.documentId,registryEntryId:e.registryEntryId}));this.indexingStatus_$.set(t),t.total>0&&t.pending===0&&this.stopIndexingPolling()}catch{this.stopIndexingPolling()}})}stopIndexingPolling(){this.indexingPollInterval!==null&&(clearInterval(this.indexingPollInterval),this.indexingPollInterval=null),this.indexingActive_$.set(!1)}ngOnDestroy(){this.stopIndexingPolling()}loadDefaultCorpusDocumentId(){return i(this,null,function*(){try{let e=yield this.settings_AS.getSection(l.modelTesting),t=typeof e.embeddingTestCorpusDocumentId=="string"?e.embeddingTestCorpusDocumentId:"";this.defaultCorpusDocumentId_$.set(t)}catch{}})}setDefaultCorpusDocumentId(e){return i(this,null,function*(){this.error_$.set(null);try{let t=yield this.settings_AS.getSection(l.modelTesting),s={testAnalysisProvider:t.testAnalysisProvider??"open-ai",testAnalysisModel:t.testAnalysisModel??"",embeddingTestCorpusDocumentId:e.documentId};yield this.settings_AS.saveSection(l.modelTesting,s),this.defaultCorpusDocumentId_$.set(e.documentId)}catch(t){let s=t instanceof Error?t.message:"Default corpus be\xE1ll\xEDt\xE1sa sikertelen.";throw this.error_$.set(s),t}})}static \u0275fac=function(t){return new(t||o)};static \u0275prov=a({token:o,factory:o.\u0275fac})}return o})();export{D as a};
2
+ //# sourceMappingURL=chunk-IVLMVAVJ.js.map
@@ -0,0 +1,2 @@
1
+ import{e as rt}from"./chunk-TWK7BOB7.js";import{I as st}from"./chunk-Y6V4NGLU.js";import{$a as N,C as v,D as Z,Fa as u,Ga as V,Ha as T,J as L,K as R,L as S,M as q,Pa as W,Qa as K,R as J,Ra as U,Ta as tt,Ua as et,Z as o,aa as y,bb as B,da as C,fa as w,ga as H,ha as G,hb as nt,ia as b,ja as E,jb as j,k as h,la as x,na as Q,oa as D,p as g,pa as k,pb as it,qa as s,ra as a,sa as M,ua as P,ub as ot,va as F,wa as d,xb as at,y as I}from"./chunk-TBMJSIBB.js";var lt=(()=>{class n{baseUrl=`${st.api.baseUrl}/cc-account`;http=v(at);listAccounts(){return g(this.http.get(`${this.baseUrl}/list`))}refreshLocalAccounts(){return g(this.http.post(`${this.baseUrl}/refresh`,{}))}getInstanceMapping(){return g(this.http.get(`${this.baseUrl}/instance-mapping`))}getAccount(t){return g(this.http.get(`${this.baseUrl}/${t}`))}getAccountUsage(t){return g(this.http.get(`${this.baseUrl}/${t}/usage`))}getAccountUsageHistory(t){let e=[];t.windowType!=null&&t.windowType!==""&&e.push(`windowType=${encodeURIComponent(t.windowType)}`),t.fromMs!=null&&e.push(`fromMs=${t.fromMs}`),t.toMs!=null&&e.push(`toMs=${t.toMs}`);let i=e.length>0?`?${e.join("&")}`:"";return g(this.http.get(`${this.baseUrl}/${t.accountKey}/usage-history${i}`))}refreshAccountUsage(t){return g(this.http.post(`${this.baseUrl}/${t}/refresh-usage`,{}))}renameAccount(t){let e={};return t.displayName!==void 0&&(e.displayName=t.displayName),t.email!==void 0&&(e.email=t.email),g(this.http.patch(`${this.baseUrl}/${t.accountKey}`,e))}static \u0275fac=function(e){return new(e||n)};static \u0275prov=I({token:n,factory:n.\u0275fac,providedIn:"root"})}return n})();var pt="cc:account-usage-update",_t="cc:account-list-update",ut=(()=>{class n{account_AS=v(lt);socket_CS=v(rt);ngZone=v(J);socketSubscription=null;accounts_$=y([]);accountUsageMap_$=y(new Map);instanceMapping_$=y(null);usageHistoryMap_$=y(new Map);isLoading_$=y(!1);loadError_$=y(null);loadDashboardBootstrap(){return h(this,null,function*(){this.isLoading_$.set(!0),this.loadError_$.set(null);try{let[t,e]=yield Promise.all([this.account_AS.listAccounts(),this.account_AS.getInstanceMapping()]);this.accounts_$.set(t.items),this.instanceMapping_$.set(e);let i=t.items.map(p=>this.account_AS.getAccountUsage(p.accountKey)),c=yield Promise.all(i),_=new Map(this.accountUsageMap_$());for(let p=0;p<t.items.length;p++)_.set(t.items[p].accountKey,c[p].items);this.accountUsageMap_$.set(_)}catch(t){this.loadError_$.set(this.errorMessageOf(t))}finally{this.isLoading_$.set(!1)}})}loadAccounts(){return h(this,null,function*(){try{let t=yield this.account_AS.listAccounts();this.accounts_$.set(t.items)}catch(t){this.loadError_$.set(this.errorMessageOf(t))}})}loadAccountUsage(t){return h(this,null,function*(){try{let e=yield this.account_AS.getAccountUsage(t),i=new Map(this.accountUsageMap_$());i.set(t,e.items),this.accountUsageMap_$.set(i)}catch(e){this.loadError_$.set(this.errorMessageOf(e))}})}loadAccountUsageHistory(t){return h(this,null,function*(){try{let e=yield this.account_AS.getAccountUsageHistory(t),i=new Map(this.usageHistoryMap_$());i.set(t.accountKey,e.items),this.usageHistoryMap_$.set(i)}catch(e){this.loadError_$.set(this.errorMessageOf(e))}})}loadInstanceMapping(){return h(this,null,function*(){try{let t=yield this.account_AS.getInstanceMapping();this.instanceMapping_$.set(t)}catch(t){this.loadError_$.set(this.errorMessageOf(t))}})}refreshAccounts(){return h(this,null,function*(){this.isLoading_$.set(!0),this.loadError_$.set(null);try{let t=yield this.account_AS.refreshLocalAccounts();return yield this.loadAccounts(),t}catch(t){return this.loadError_$.set(this.errorMessageOf(t)),{refreshedKeys:[],scannedPaths:0}}finally{this.isLoading_$.set(!1)}})}refreshAccountUsage(t){return h(this,null,function*(){try{let e=yield this.account_AS.refreshAccountUsage(t);return yield this.loadAccountUsage(t),yield this.loadAccounts(),e}catch(e){return this.loadError_$.set(this.errorMessageOf(e)),{status:"error",windowsUpserted:0,email:null}}})}renameAccount(t){return h(this,null,function*(){try{let e=yield this.account_AS.renameAccount(t),i=this.accounts_$().map(c=>c.accountKey===t.accountKey?e:c);this.accounts_$.set(i)}catch(e){this.loadError_$.set(this.errorMessageOf(e))}})}startLiveUpdates(){this.socketSubscription==null&&(this.socketSubscription=this.socket_CS.event$.subscribe(t=>{this.ngZone.run(()=>{t.event===pt?this.handleAccountUsageUpdate(t.payload):t.event===_t&&this.handleAccountListUpdate(t.payload)})}))}stopLiveUpdates(){this.socketSubscription!=null&&(this.socketSubscription.unsubscribe(),this.socketSubscription=null)}ngOnDestroy(){this.stopLiveUpdates()}handleAccountUsageUpdate(t){let e=t.accountKey,i=t.windowType;if(typeof e!="string"||e===""||typeof i!="string")return;let c={accountKey:e,windowType:i,utilization:typeof t.utilization=="number"?t.utilization:void 0,resetsAtMs:typeof t.resetsAtMs=="number"?t.resetsAtMs:void 0,lastObservedStatus:typeof t.lastObservedStatus=="string"?t.lastObservedStatus:void 0,observedAt:typeof t.observedAt=="string"?t.observedAt:void 0,lastObservedByCcapId:typeof t.lastObservedByCcapId=="string"?t.lastObservedByCcapId:void 0,lastObservedBySessionId:typeof t.lastObservedBySessionId=="string"?t.lastObservedBySessionId:void 0},_=new Map(this.accountUsageMap_$()),l=(_.get(e)??[]).filter(f=>f.windowType!==i);l.push(c),_.set(e,l),this.accountUsageMap_$.set(_)}handleAccountListUpdate(t){this.loadAccounts()}errorMessageOf(t){if(t instanceof Error)return t.message;if(typeof t=="object"&&t!==null){let e=t;if(typeof e.message=="string")return e.message}return String(t)}static \u0275fac=function(e){return new(e||n)};static \u0275prov=I({token:n,factory:n.\u0275fac,providedIn:"root"})}return n})();var $=(()=>{class n{static CHART_WIDTH=100;static CHART_HEIGHT=40;static COLOR_MAP={five_hour:"#10b981",seven_day:"#06b6d4",seven_day_opus:"#a855f7",seven_day_sonnet:"#f59e0b",extra_usage:"#f43f5e"};static WINDOW_LABEL_MAP={five_hour:"5h",seven_day:"Weekly",seven_day_opus:"Opus",seven_day_sonnet:"Sonnet",extra_usage:"Extra"};static WINDOW_ORDER=["five_hour","seven_day","seven_day_opus","seven_day_sonnet","extra_usage"];static buildChart(t){let e=Number.POSITIVE_INFINITY,i=Number.NEGATIVE_INFINITY,c=0;for(let l of t){if(typeof l.observedAt!="string"||l.observedAt===""||typeof l.utilization!="number"||!isFinite(l.utilization))continue;let f=Date.parse(l.observedAt);isFinite(f)&&(f<e&&(e=f),f>i&&(i=f),c++)}if(c===0)return{lines:n.WINDOW_ORDER.map(l=>({windowType:l,label:n.WINDOW_LABEL_MAP[l]??l,colorHex:n.COLOR_MAP[l]??"#9ca3af",pathPoints:"",hasData:!1,pointCount:0,lastX:0,lastY:0})),hasAnyData:!1,minTimeMs:0,maxTimeMs:0};i-e<1&&(i=e+36e5);let _=i-e,p=n.WINDOW_ORDER.map(l=>{let f=[];for(let m of t){if(m.windowType!==l||typeof m.observedAt!="string"||m.observedAt===""||typeof m.utilization!="number"||!isFinite(m.utilization))continue;let A=Date.parse(m.observedAt);isFinite(A)&&f.push({t:A,u:Math.max(0,Math.min(1,m.utilization))})}f.sort((m,A)=>m.t-A.t);let O=[],z=0,Y=0;for(let m of f){let A=(m.t-e)/_*n.CHART_WIDTH,X=n.CHART_HEIGHT-m.u*n.CHART_HEIGHT;O.push(`${A.toFixed(2)},${X.toFixed(2)}`),z=A,Y=X}return{windowType:l,label:n.WINDOW_LABEL_MAP[l]??l,colorHex:n.COLOR_MAP[l]??"#9ca3af",pathPoints:O.join(" "),hasData:O.length>0,pointCount:O.length,lastX:z,lastY:Y}});return{lines:p,hasAnyData:p.some(l=>l.hasData),minTimeMs:e,maxTimeMs:i}}}return n})();var dt=(n,r)=>r.windowType,mt=()=>["five_hour","seven_day","seven_day_opus","seven_day_sonnet","extra_usage"];function ht(n,r){if(n&1&&M(0,"div"),n&2){d();let t=U(0),e=d();E("h-full transition-all "+e.utilizationBarColorClass(t.utilization)),G("width",e.utilizationPercent(t.utilization),"%")}}function ft(n,r){if(n&1&&(W(0),s(1,"div")(2,"div",4),u(3),a(),s(4,"div",5)(5,"div"),C(6,ht,1,4,"div",6),a(),s(7,"span",7),u(8),a()(),s(9,"div",8),u(10),a()()),n&2){let t,e=r.$implicit,i=d(),c=K(i.usageItemOfWindow(e));o(),E(i.compact?"grid grid-cols-[90px_1fr_56px] items-center gap-2 text-[10px]":"grid grid-cols-[110px_1fr_64px] items-center gap-2 text-[11px]"),b("opacity-50",!c),o(),H("title",e),o(),T(" ",i.windowLabelOf(e)," "),o(2),E(i.compact?"flex-1 h-1.5 bg-neutral-800 rounded-full overflow-hidden":"flex-1 h-2 bg-neutral-800 rounded-full overflow-hidden"),o(),x(c?6:-1),o(),E(i.compact?"w-8 text-[10px]":"w-9"),o(),T(" ",i.formatUtilization((t=c==null?null:c.utilization)!==null&&t!==void 0?t:null)," "),o(),H("title","Resets in "+i.formatResetCountdown(c==null?null:c.resetsAtMs)),o(),T(" ",i.formatResetCountdown(c==null?null:c.resetsAtMs)," ")}}function xt(n,r){n&1&&(s(0,"div",2),u(1," No data yet \u2014 click "),s(2,"strong",9),u(3,"Pull"),a(),u(4," or wait for the next rate-limit event. "),a())}function Ct(n,r){n&1&&(s(0,"div",14),u(1," No graph data yet \u2014 pull usage or wait for a CC session rate-limit event. "),a())}function gt(n,r){if(n&1&&(S(),M(0,"circle",25)),n&2){let t=d(2).$implicit;w("cx",t.lastX)("cy",t.lastY)("fill",t.colorHex)}}function yt(n,r){if(n&1&&(S(),M(0,"polyline",26)(1,"circle",27)),n&2){let t=d(2).$implicit;w("points",t.pathPoints)("stroke",t.colorHex),o(),w("cx",t.lastX)("cy",t.lastY)("fill",t.colorHex)}}function vt(n,r){if(n&1&&C(0,gt,1,3,":svg:circle",25)(1,yt,2,5),n&2){let t=d().$implicit;x(t.pointCount===1?0:1)}}function wt(n,r){if(n&1&&C(0,vt,2,1),n&2){let t=r.$implicit;x(t.hasData?0:-1)}}function At(n,r){if(n&1&&(s(0,"span",31),u(1,"\xB7"),a(),s(2,"span",32),u(3),a()),n&2){let t=d().$implicit,e=d(4);o(3),T(" ",((e.chartH-t.lastY)/e.chartH*100).toFixed(0),"% ")}}function bt(n,r){if(n&1&&(s(0,"div",28),M(1,"span",29),s(2,"span",30),u(3),a(),C(4,At,4,1),a()),n&2){let t=r.$implicit;b("opacity-40",!t.hasData),o(),G("background-color",t.colorHex),o(2),V(t.label),o(),x(t.hasData?4:-1)}}function Mt(n,r){if(n&1&&(s(0,"span"),u(1),N(2,"date"),a()),n&2){d(2);let t=U(0);o(),V(B(2,1,t.minTimeMs,"yyyy-MM-dd HH:mm"))}}function $t(n,r){n&1&&(s(0,"span"),u(1,"\u2014"),a())}function Tt(n,r){if(n&1&&(s(0,"span"),u(1),N(2,"date"),a()),n&2){d(2);let t=U(0);o(),V(B(2,1,t.maxTimeMs,"yyyy-MM-dd HH:mm"))}}function St(n,r){n&1&&(s(0,"span"),u(1,"\u2014"),a())}function Et(n,r){if(n&1){let t=P();s(0,"div",15),S(),s(1,"svg",16),M(2,"line",17)(3,"line",18)(4,"line",19),D(5,wt,1,1,null,null,dt),a(),q(),s(7,"div",20)(8,"span"),u(9,"100%"),a(),s(10,"span"),u(11,"50%"),a(),s(12,"span"),u(13,"0%"),a()()(),s(14,"div",21),D(15,bt,5,6,"div",22,dt),a(),s(17,"div",23),C(18,Mt,3,4,"span")(19,$t,2,0,"span"),s(20,"button",24),F("click",function(){L(t);let i=d(3);return R(i.handleRefreshGraph())}),u(21," \u21BB Refresh "),a(),C(22,Tt,3,4,"span")(23,St,2,0,"span"),a()}if(n&2){d();let t=U(0),e=d(2);o(),b("h-24",e.compact)("h-32",!e.compact),w("viewBox",e.chartViewBox),o(),w("y1",e.chartH)("x2",e.chartW)("y2",e.chartH),o(),w("y1",e.chartMidY)("x2",e.chartW)("y2",e.chartMidY),o(),w("x2",e.chartW),o(),k(t.lines),o(10),k(t.lines),o(3),x(t.minTimeMs?18:19),o(4),x(t.maxTimeMs?22:23)}}function Ut(n,r){if(n&1&&(W(0),s(1,"div",13),C(2,Ct,2,0,"div",14)(3,Et,24,14),a()),n&2){let t=K(d(2).chart_$());o(2),x(t.hasAnyData?3:2)}}function Ot(n,r){if(n&1){let t=P();s(0,"div",3)(1,"button",10),F("click",function(){L(t);let i=d();return R(i.handleToggleGraph())}),S(),s(2,"svg",11),M(3,"path",12),a(),u(4),a(),C(5,Ut,4,2,"div",13),a()}if(n&2){let t=d();o(),H("title",t.isGraphOpen_$()?"Hide usage graph":"Show usage graph (utilization over time per window)"),o(),b("rotate-90",t.isGraphOpen_$()),o(2),T(" \u{1F4C8} ",t.isGraphOpen_$()?"Hide":"Show"," graph "),o(),x(t.isGraphOpen_$()?5:-1)}}var Jt=(()=>{class n{account_DS=v(ut);accountKey="";compact=!1;showGraphToggle=!0;initiallyOpenGraph=!1;isGraphOpen_$=y(!1);chart_$=nt(()=>$.buildChart(this.account_DS.usageHistoryMap_$().get(this.accountKey)??[]));chartViewBox=`0 0 ${$.CHART_WIDTH} ${$.CHART_HEIGHT}`;chartW=$.CHART_WIDTH;chartH=$.CHART_HEIGHT;chartMidY=$.CHART_HEIGHT/2;usageEffect=j(()=>{let t=this.accountKey;t&&(this.account_DS.accountUsageMap_$().has(t)||this.account_DS.loadAccountUsage(t))});initialOpenEffect=j(()=>{this.initiallyOpenGraph&&this.isGraphOpen_$.set(!0)});handleToggleGraph(){return h(this,null,function*(){let t=!this.isGraphOpen_$();this.isGraphOpen_$.set(t),t&&!this.account_DS.usageHistoryMap_$().has(this.accountKey)&&(yield this.account_DS.loadAccountUsageHistory({accountKey:this.accountKey}))})}handleRefreshGraph(){return h(this,null,function*(){yield this.account_DS.loadAccountUsageHistory({accountKey:this.accountKey})})}usageItemOfWindow(t){let e=this.account_DS.accountUsageMap_$().get(this.accountKey)??[];for(let i of e)if(i.windowType===t)return i;return null}hasAnyUsageData(){return(this.account_DS.accountUsageMap_$().get(this.accountKey)??[]).length>0}windowLabelOf(t){switch(t){case"five_hour":return"5-hour session";case"seven_day":return"Weekly";case"seven_day_opus":return"Weekly \xB7 Opus";case"seven_day_sonnet":return"Weekly \xB7 Sonnet";case"extra_usage":return"Extra (pay-as-you-go)";default:return t}}utilizationPercent(t){return t==null||!isFinite(t)?0:Math.max(0,Math.min(100,Math.round(t*100)))}formatUtilization(t){return t==null?"\u2014":`${Math.round(t*100)}%`}utilizationBarColorClass(t){return t==null||!isFinite(t)?"bg-neutral-600":t>=.85?"bg-red-500":t>=.5?"bg-amber-500":"bg-emerald-500"}formatResetCountdown(t){if(t==null||!isFinite(t)||t<=0)return"\u2014";let e=t-Date.now();if(e<=0)return"expired";let i=Math.floor(e/6e4),c=Math.floor(i/(60*24)),_=Math.floor(i%(60*24)/60),p=i%60;return c>0?`${c}d ${_}h`:_>0?`${_}h ${p}m`:`${p}m`}static \u0275fac=function(e){return new(e||n)};static \u0275cmp=Z({type:n,selectors:[["app-cc-account-usage-view"]],inputs:{accountKey:"accountKey",compact:"compact",showGraphToggle:"showGraphToggle",initiallyOpenGraph:"initiallyOpenGraph"},standalone:!0,features:[tt],decls:6,vars:11,consts:[[1,"flex","flex-col"],[3,"class","opacity-50"],[1,"text-[10px]","text-neutral-500","italic","pt-1","border-t","border-neutral-800/40"],[1,"border-t","border-neutral-800/40","pt-2"],[1,"text-neutral-300","font-medium","truncate",3,"title"],[1,"flex","items-center","gap-2","min-w-0"],[3,"class","width"],[1,"font-mono","text-neutral-200","text-right","shrink-0"],[1,"font-mono","text-neutral-500","text-right","text-[10px]","truncate",3,"title"],[1,"text-neutral-400"],["type","button",1,"text-[11px]","text-neutral-400","hover:text-neonCyan","flex","items-center","gap-1","transition-colors",3,"click","title"],["fill","none","stroke","currentColor","viewBox","0 0 24 24","aria-hidden","true",1,"w-3","h-3","transition-transform"],["stroke-linecap","round","stroke-linejoin","round","stroke-width","2","d","M9 5l7 7-7 7"],[1,"mt-2","rounded-md","border","border-neutral-800","bg-neutral-950/40","p-2"],[1,"text-[11px]","text-neutral-500","italic","px-2","py-3","text-center"],[1,"relative","w-full"],["preserveAspectRatio","none",1,"w-full","block"],["x1","0","stroke","#3f3f46","stroke-width","0.3"],["x1","0","stroke","#3f3f46","stroke-width","0.2","stroke-dasharray","1,1"],["x1","0","y1","0","y2","0","stroke","#3f3f46","stroke-width","0.2","stroke-dasharray","1,1"],[1,"absolute","inset-y-0","left-0","flex","flex-col","justify-between","text-[8px]","text-neutral-600","font-mono","pointer-events-none"],[1,"mt-2","flex","flex-wrap","items-center","gap-2","text-[10px]"],[1,"flex","items-center","gap-1",3,"opacity-40"],[1,"mt-1","flex","items-center","justify-between","text-[9px]","text-neutral-600"],["type","button","title","Re-fetch usage event history for this graph.",1,"text-[10px]","text-neutral-400","hover:text-neonCyan","border","border-neutral-700","hover:border-neonCyan","rounded","px-1.5","py-0.5","transition-colors",3,"click"],["r","0.8"],["fill","none","stroke-width","0.6","stroke-linecap","round","stroke-linejoin","round","vector-effect","non-scaling-stroke"],["r","0.6"],[1,"flex","items-center","gap-1"],[1,"inline-block","w-2","h-2","rounded-sm"],[1,"text-neutral-300"],[1,"text-neutral-500"],[1,"font-mono","text-neutral-400"]],template:function(e,i){e&1&&(s(0,"div",0)(1,"div"),D(2,ft,11,15,"div",1,Q),a(),C(4,xt,5,0,"div",2)(5,Ot,6,5,"div",3),a()),e&2&&(b("gap-1",i.compact)("gap-2",!i.compact),o(),b("space-y-1",i.compact)("space-y-2",!i.compact),o(),k(et(10,mt)),o(2),x(i.hasAnyUsageData()?-1:4),o(),x(i.showGraphToggle?5:-1))},dependencies:[ot,it],encapsulation:2})}return n})();export{ut as a,Jt as b};
2
+ //# sourceMappingURL=chunk-KBMXCICX.js.map