@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,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../server/src/_collections/ccap-json-parse/ccap-json-parse.util.ts", "../server/src/_collections/ccap-json-parse/ccap-json-parse-phase.enum.ts", "src/app/_components/ccap-error-display/ccap-error-display.component.ts", "src/app/_components/ccap-error-display/ccap-error-display.component.html", "src/app/_modules/user-input/_services/user-input.data-service.ts", "src/app/_modules/user-input/_enums/uin-quick-input-area-catalog-match-mode.enum.ts", "src/app/_modules/config/_modules/settings/_collections/consts/ui-state/set-area-nav-links.const.ts", "src/app/_modules/user-input/_collections/consts/quick-input/uin-quick-input-area-catalog.const.ts", "src/app/_modules/user-input/_collections/utils/quick-input/uin-quick-input-area-catalog.util.ts", "src/app/_modules/user-input/_collections/utils/quick-input/uin-quick-input-composer-draft.util.ts", "src/app/_modules/user-input/_collections/utils/quick-input/uin-quick-input-offline-queue.util.ts", "src/app/_modules/user-input/_enums/uin-quick-input-overlay-area-id.enum.ts", "src/app/_modules/user-input/_collections/consts/quick-input/uin-quick-input-overlay-area-catalog.const.ts", "src/app/_modules/user-input/_collections/utils/quick-input/uin-quick-input-overlay-area-catalog.util.ts", "src/app/_modules/user-input/_collections/uin-fab-position.util.ts", "src/app/_modules/project-management/_services/project-management.api-service.ts"],
4
- "sourcesContent": ["import { DyFM_Log } from '@futdevpro/fsm-dynamo';\n\nimport { CCAP_JsonParseFailure_Interface } from './ccap-json-parse-failure.interface';\nimport { CCAP_JsonParsePhase_Type } from './ccap-json-parse-phase.enum';\nimport { CCAP_JsonParseResult_Type } from './ccap-json-parse-result.type';\n\n/** Logolt diagnostic source text max hossza (fej/farok trunc). */\nconst JSON_PARSE_DIAGNOSTIC_MAX_CHARS: number = 12000;\n\n/** Hiba pozíció körüli snippet sugara. */\nconst JSON_PARSE_SNIPPET_RADIUS: number = 120;\n\n/** Ha nincs pozíció a hibaüzenetben, ennyi karaktert logolunk az elejéről. */\nconst JSON_PARSE_SNIPPET_FALLBACK_PREFIX: number = 600;\n\n/**\n * Központi JSON parse SSOT: strict `JSON.parse`, LLM pipeline (extract + prepare + parse),\n * strukturált failure és log-formázás.\n */\nexport class CCAP_JsonParse_Util {\n\n /**\n * JSON string kinyerése a content-ből: markdown code block (```json ... ```)\n * vagy első { – utolsó } között részt adja vissza; egyébként az eredeti trimmed.\n */\n static extractJsonFromContent(content: string): string {\n const codeBlockMatch: RegExpMatchArray | null =\n content.match(/```(?:json)?\\s*([\\s\\S]*?)```/);\n if (codeBlockMatch?.[1]) {\n return codeBlockMatch[1].trim();\n }\n const firstBrace: number = content.indexOf('{');\n const lastBrace: number = content.lastIndexOf('}');\n if (firstBrace !== -1 && lastBrace > firstBrace) {\n return content.slice(firstBrace, lastBrace + 1);\n }\n return content;\n }\n\n /**\n * Nyers LLM válasz úgy néz ki, mintha lenne kinyerhető JSON object root (`extractJsonFromContent` után `{` kezdet).\n * Ha false, szabad szöveg / markdown válasz — ilyenkor nem futtatjuk a JSON-specifikus repair-eket (elkerüljük a\n * téves escape-eket), és a run finalization opcionálisan JSON-format retry-t indíthat.\n */\n static rawContentLooksLikeExtractableJsonObject(content: string): boolean {\n const trimmed: string = (content ?? '').trim();\n const extracted: string = CCAP_JsonParse_Util.extractJsonFromContent(trimmed);\n\n return CCAP_JsonParse_Util.extractedTrimmedLooksLikeJsonObjectRoot(extracted);\n }\n\n /**\n * Kinyert LLM JSON szöveg előkészítése: orphan merge → belső `\"` repair → control-char sanitize → trailing comma relax.\n * A sanitize NEM lehet előbb: naiv string-toggle-nél a value-ban lévő nyers `\"` (pl. „Pending\" után) lezárja a\n * „string”-et, a következő property-sorokat string belsejének nézi, és a `\\n`-eket `\\\\n`-né escape-eli — szétbontja\n * a JSON-t (lásd run-finalization parse hibák).\n */\n static prepareLlmJsonTextForStrictParse(extracted: string): string {\n const looksLikeJsonObjectRoot: boolean =\n CCAP_JsonParse_Util.extractedTrimmedLooksLikeJsonObjectRoot(extracted);\n\n if (!looksLikeJsonObjectRoot) {\n return CCAP_JsonParse_Util.relaxTrailingCommasInJsonLikeText(extracted);\n }\n\n const orphanMerged: string =\n CCAP_JsonParse_Util.repairExecutionSummaryForUserOrphanSiblingStrings(extracted);\n const afterInner: string =\n CCAP_JsonParse_Util.repairUnescapedInnerDoubleQuotesInJsonLikeText(orphanMerged);\n const sanitized: string =\n CCAP_JsonParse_Util.sanitizeRawControlCharsInsideJsonStrings(afterInner);\n\n return CCAP_JsonParse_Util.relaxTrailingCommasInJsonLikeText(sanitized);\n }\n\n /**\n * `extractJsonFromContent` kimenete `{`-tel kezdődik-e (whitespace után) — JSON object root jelölés repair-gate-hez.\n */\n private static extractedTrimmedLooksLikeJsonObjectRoot(extracted: string): boolean {\n return (extracted ?? '').trimStart().startsWith('{');\n }\n\n /**\n * LLM pipeline «prepared» szöveg (log / diagnosztika).\n */\n static getLlmPipelinePreparedText(content: string): string {\n const trimmed: string = (content ?? '').trim();\n const extracted: string = CCAP_JsonParse_Util.extractJsonFromContent(trimmed);\n\n return CCAP_JsonParse_Util.prepareLlmJsonTextForStrictParse(extracted);\n }\n\n /**\n * Strict JSON.parse: nincs LLM sanitize / trailing comma relax.\n */\n static tryParseStrict(params: {\n text: string;\n contextLabel: string;\n }): CCAP_JsonParseResult_Type {\n const text: string = params.text ?? '';\n\n try {\n const value: unknown = JSON.parse(text);\n\n return { ok: true, value: value };\n } catch (error: unknown) {\n const failure: CCAP_JsonParseFailure_Interface =\n CCAP_JsonParse_Util.buildFailureFromParseError({\n error: error,\n sourceText: text,\n contextLabel: params.contextLabel,\n phase: CCAP_JsonParsePhase_Type.strictParse,\n });\n\n return { ok: false, failure: failure };\n }\n }\n\n /**\n * Strict parse; hiba esetén Error dobása `cause`-szal (eredeti parse error).\n */\n static parseStrictOrThrow(params: {\n text: string;\n contextLabel: string;\n }): unknown {\n const result: CCAP_JsonParseResult_Type = CCAP_JsonParse_Util.tryParseStrict({\n text: params.text,\n contextLabel: params.contextLabel,\n });\n\n if (result.ok) {\n return result.value;\n }\n\n const err: Error = new Error(result.failure.summaryMessage);\n const causeUnknown: unknown = result.failure.originalError;\n err.cause = causeUnknown instanceof Error\n ? causeUnknown\n : new Error(result.failure.rawMessage);\n\n throw err;\n }\n\n /**\n * LLM válasz szöveg: extract → control char sanitize → trailing comma relax → JSON.parse.\n */\n static tryParseLlmPipeline(params: {\n content: string;\n contextLabel: string;\n }): CCAP_JsonParseResult_Type {\n const trimmed: string = (params.content ?? '').trim();\n const extracted: string = CCAP_JsonParse_Util.extractJsonFromContent(trimmed);\n const prepared: string = CCAP_JsonParse_Util.prepareLlmJsonTextForStrictParse(extracted);\n const inner: CCAP_JsonParseResult_Type = CCAP_JsonParse_Util.tryParseStrict({\n text: prepared,\n contextLabel: params.contextLabel,\n });\n\n if (inner.ok) {\n return { ok: true, value: inner.value };\n }\n\n const base: CCAP_JsonParseFailure_Interface = inner.failure;\n\n const llmSummary: string =\n `JSON parse failed [${base.contextLabel}] (${CCAP_JsonParsePhase_Type.llmParse}): ${base.rawMessage}`;\n\n return {\n ok: false,\n failure: {\n phase: CCAP_JsonParsePhase_Type.llmParse,\n contextLabel: base.contextLabel,\n rawMessage: base.rawMessage,\n summaryMessage: llmSummary,\n position: base.position,\n line: base.line,\n column: base.column,\n inputLength: trimmed.length,\n snippetAroundError: base.snippetAroundError,\n extractedLength: extracted.length,\n preparedLength: prepared.length,\n originalError: base.originalError,\n },\n };\n }\n\n /**\n * LLM pipeline parse; hiba esetén Error dobása.\n */\n static parseLlmPipelineOrThrow(params: {\n content: string;\n contextLabel: string;\n }): unknown {\n const result: CCAP_JsonParseResult_Type = CCAP_JsonParse_Util.tryParseLlmPipeline({\n content: params.content,\n contextLabel: params.contextLabel,\n });\n\n if (result.ok) {\n return result.value;\n }\n\n const err: Error = new Error(result.failure.summaryMessage);\n const causeUnknown: unknown = result.failure.originalError;\n err.cause = causeUnknown instanceof Error\n ? causeUnknown\n : new Error(result.failure.rawMessage);\n\n throw err;\n }\n\n /**\n * Strukturált failure → JSON-kompatibilis mezők (error tábla additionalContext, Mongo cleanAssign).\n * Nem tartalmaz Error objektumot; üzenetek stringként.\n */\n static failureToPlainAdditionalContext(\n failure: CCAP_JsonParseFailure_Interface,\n ): Record<string, unknown> {\n const out: Record<string, unknown> = {\n jsonParsePhase: failure.phase,\n jsonParseContextLabel: failure.contextLabel,\n jsonParseRawMessage: failure.rawMessage,\n jsonParseSummaryMessage: failure.summaryMessage,\n };\n\n if (failure.position !== undefined) {\n out.jsonParsePosition = failure.position;\n }\n\n if (failure.line !== undefined) {\n out.jsonParseLine = failure.line;\n }\n\n if (failure.column !== undefined) {\n out.jsonParseColumn = failure.column;\n }\n\n if (failure.inputLength !== undefined) {\n out.jsonParseInputLength = failure.inputLength;\n }\n\n if (failure.extractedLength !== undefined) {\n out.jsonParseExtractedLength = failure.extractedLength;\n }\n\n if (failure.preparedLength !== undefined) {\n out.jsonParsePreparedLength = failure.preparedLength;\n }\n\n if (failure.snippetAroundError !== undefined) {\n out.jsonParseSnippetAroundError = failure.snippetAroundError;\n }\n\n const orig: unknown = failure.originalError;\n\n if (orig instanceof Error) {\n out.jsonParseOriginalErrorMessage = orig.message;\n } else if (orig != null) {\n out.jsonParseOriginalErrorMessage = String(orig);\n }\n\n return out;\n }\n\n /**\n * Failure többsoros, stabil log string (warn / fájl / DyFM message kiegészítő).\n * `includeFullSourceText: false`: csak meta + pozíció körüli snippet — Error `cause`-lánc / DB message-hoz,\n * hogy a teljes prepared text (akár 12k+) ne duplikálódjon a rekord `message` mezőben.\n * `includeSummaryLine: false`: kihagyja a `summary: ...` sort, ha a szülő `Error.message` már a summaryMessage.\n */\n static formatFailureForLog(\n failure: CCAP_JsonParseFailure_Interface,\n diagnosticSourceText: string,\n options?: { includeFullSourceText?: boolean; includeSummaryLine?: boolean },\n ): string {\n const position: number | undefined = failure.position;\n let snippetBlock: string;\n\n if (position !== undefined && position < diagnosticSourceText.length) {\n const start: number = Math.max(0, position - JSON_PARSE_SNIPPET_RADIUS);\n const end: number = Math.min(\n diagnosticSourceText.length,\n position + JSON_PARSE_SNIPPET_RADIUS,\n );\n const slice: string = diagnosticSourceText.slice(start, end);\n const rel: number = position - start;\n const pointer: string = ' '.repeat(Math.max(0, rel)) + '^';\n\n snippetBlock =\n `snippetAroundPosition | startOffset: ${String(start)} | errorIndex: ${String(position)}\\n`\n + `${slice}\\n`\n + `${pointer}`;\n } else {\n const prefix: string = diagnosticSourceText.slice(0, JSON_PARSE_SNIPPET_FALLBACK_PREFIX);\n\n snippetBlock =\n `snippetFallback | noUsablePosition | firstChars: ${String(JSON_PARSE_SNIPPET_FALLBACK_PREFIX)}\\n`\n + prefix\n + (diagnosticSourceText.length > JSON_PARSE_SNIPPET_FALLBACK_PREFIX ? '\\n...' : '');\n }\n\n let fullBlock: string;\n\n if (diagnosticSourceText.length <= JSON_PARSE_DIAGNOSTIC_MAX_CHARS) {\n fullBlock =\n `sourceTextFull (${String(diagnosticSourceText.length)} chars):\\n${diagnosticSourceText}`;\n } else {\n const half: number = Math.floor(JSON_PARSE_DIAGNOSTIC_MAX_CHARS / 2);\n const head: string = diagnosticSourceText.slice(0, half);\n const tail: string = diagnosticSourceText.slice(diagnosticSourceText.length - half);\n\n fullBlock =\n `sourceTextTruncated | totalChars: ${String(diagnosticSourceText.length)} | `\n + `shownEachEnd: ${String(half)}\\n`\n + `--- head ---\\n${head}\\n--- ... ---\\n${tail}\\n--- end ---`;\n }\n\n const lenParts: string[] = [];\n\n if (failure.inputLength !== undefined) {\n lenParts.push(`trimmedInputLength: ${String(failure.inputLength)}`);\n }\n\n if (failure.extractedLength !== undefined) {\n lenParts.push(`extractedLength: ${String(failure.extractedLength)}`);\n }\n\n if (failure.preparedLength !== undefined) {\n lenParts.push(`preparedLength: ${String(failure.preparedLength)}`);\n }\n\n const lenLine: string = lenParts.length > 0 ? `${lenParts.join(' | ')}\\n` : '';\n\n const summaryLine: string =\n options?.includeSummaryLine === false\n ? ''\n : `summary: ${failure.summaryMessage}\\n`;\n\n const head: string =\n `${failure.contextLabel} | phase: ${failure.phase} | JSON.parse failed | ${failure.rawMessage}\\n`\n + summaryLine\n + (failure.line !== undefined && failure.column !== undefined\n ? `line: ${String(failure.line)} | column: ${String(failure.column)}\\n`\n : '')\n + lenLine\n + `${snippetBlock}\\n`;\n\n // Kompakt mód: log / warn továbbra is teljes `fullBlock`-ot kap (default).\n if (options?.includeFullSourceText === false) {\n return head.trimEnd();\n }\n\n return `${head}${fullBlock}`;\n }\n\n /**\n * Részletes diagnosztika `DyFM_Log.warn`-nal.\n */\n static logFailureWarn(\n failure: CCAP_JsonParseFailure_Interface,\n diagnosticSourceText: string,\n ): void {\n const lines: string = CCAP_JsonParse_Util.formatFailureForLog(\n failure,\n diagnosticSourceText,\n );\n\n DyFM_Log.warn(lines);\n }\n\n // --- belső: LLM előkészítés ---\n\n /**\n * LLM gyakori hibája: string value-ban nyers `\"` hangsúly (pl. az \"elrejtett\" fájlok). Objektum kulcs-string\n * lezáró `\"` után `:` jön; value-string után `,` / `}` / `]` — ha hiányzik a vessző, de LF van és következik\n * `\"kulcs\":`, strukturális zárás + beszúrt `,` (run-finalization). Stack-pal key vs value; `\"szó\":` belül marad escape.\n */\n private static repairUnescapedInnerDoubleQuotesInJsonLikeText(jsonText: string): string {\n type Frame_Type =\n | { kind: 'object'; phase: 'key' | 'value' }\n | { kind: 'array' };\n\n const stack: Frame_Type[] = [];\n let result: string = '';\n let inString: boolean = false;\n let stringRole: 'key' | 'value' = 'value';\n let escapeNext: boolean = false;\n\n for (let i: number = 0; i < jsonText.length; i++) {\n const c: string = jsonText[i];\n\n if (escapeNext) {\n result += c;\n escapeNext = false;\n continue;\n }\n\n if (inString) {\n if (c === '\\\\') {\n result += c;\n escapeNext = true;\n continue;\n }\n\n if (c === '\"') {\n let j: number = i + 1;\n\n while (j < jsonText.length && CCAP_JsonParse_Util.isJsonWhitespaceChar(jsonText[j])) {\n j += 1;\n }\n\n const next: string | undefined = j < jsonText.length ? jsonText[j] : undefined;\n const nextIsValueDelimiter: boolean =\n next === ','\n || next === '}'\n || next === ']'\n || next === undefined;\n const missingCommaThenQuotedKey: boolean =\n stringRole === 'value'\n && CCAP_JsonParse_Util.jsonQuoteRepairMissingCommaBeforeQuotedPropertyKey(jsonText, i);\n const isStructuralClose: boolean = stringRole === 'key'\n ? next === ':'\n : nextIsValueDelimiter || missingCommaThenQuotedKey;\n\n if (isStructuralClose) {\n inString = false;\n result += c;\n\n if (missingCommaThenQuotedKey) {\n result += ',';\n CCAP_JsonParse_Util.jsonQuoteRepairApplyCommaToInnermostObject(stack);\n }\n continue;\n }\n\n result += '\\\\';\n result += '\"';\n continue;\n }\n\n result += c;\n continue;\n }\n\n if (c === '{') {\n stack.push({ kind: 'object', phase: 'key' });\n result += c;\n continue;\n }\n\n if (c === '[') {\n stack.push({ kind: 'array' });\n result += c;\n continue;\n }\n\n if (c === '}') {\n if (stack.length > 0) {\n stack.pop();\n }\n result += c;\n continue;\n }\n\n if (c === ']') {\n if (stack.length > 0) {\n stack.pop();\n }\n result += c;\n continue;\n }\n\n if (c === ',') {\n CCAP_JsonParse_Util.jsonQuoteRepairApplyCommaToInnermostObject(stack);\n result += c;\n continue;\n }\n\n if (c === ':') {\n CCAP_JsonParse_Util.jsonQuoteRepairApplyColonToInnermostObject(stack);\n result += c;\n continue;\n }\n\n if (c === '\"') {\n stringRole = CCAP_JsonParse_Util.jsonQuoteRepairResolveStringRoleForOpenQuote(stack);\n inString = true;\n result += c;\n continue;\n }\n\n result += c;\n }\n\n return result;\n }\n\n /**\n * Van-e LF/CR a [start, endExclusive) között — LLM gyakran új sorban kezdi a következő property-t vessző nélkül.\n */\n private static jsonQuoteRepairWhitespaceRunHasLineFeed(\n text: string,\n start: number,\n endExclusive: number,\n ): boolean {\n const end: number = Math.min(endExclusive, text.length);\n\n for (let p: number = start; p < end; p++) {\n const ch: string = text[p];\n\n if (ch === '\\n' || ch === '\\r') {\n return true;\n }\n }\n\n return false;\n }\n\n /**\n * `openQuoteIdx` nyitó `\"` indexe; a következő záró `\"` után csak whitespace, majd `:` — tipikus JSON object kulcs.\n * Escape-elt karaktereket a kulcs literálban figyelembe veszi.\n */\n private static jsonQuoteRepairStringAtLooksLikeKeyThenColon(text: string, openQuoteIdx: number): boolean {\n if (openQuoteIdx >= text.length || text[openQuoteIdx] !== '\"') {\n return false;\n }\n\n let p: number = openQuoteIdx + 1;\n\n while (p < text.length) {\n const ch: string = text[p];\n\n if (ch === '\\\\') {\n if (p + 1 >= text.length) {\n return false;\n }\n\n p += 2;\n continue;\n }\n\n if (ch === '\"') {\n break;\n }\n\n p += 1;\n }\n\n if (p >= text.length || text[p] !== '\"') {\n return false;\n }\n\n p += 1;\n\n while (p < text.length && CCAP_JsonParse_Util.isJsonWhitespaceChar(text[p])) {\n p += 1;\n }\n\n return p < text.length && text[p] === ':';\n }\n\n /**\n * Value-string záró `\"` után nincs `,` / `}` / `]`, de LF/CR van a whitespace-ben és következik `\"kulcs\":` — hiányzó\n * vessző + következő property (run-finalization LLM).\n */\n private static jsonQuoteRepairMissingCommaBeforeQuotedPropertyKey(\n jsonText: string,\n closingQuoteIdx: number,\n ): boolean {\n let k: number = closingQuoteIdx + 1;\n const wsStart: number = k;\n\n while (k < jsonText.length && CCAP_JsonParse_Util.isJsonWhitespaceChar(jsonText[k])) {\n k += 1;\n }\n\n if (k < jsonText.length && jsonText[k] === ',') {\n return false;\n }\n\n if (k < jsonText.length && (jsonText[k] === '}' || jsonText[k] === ']')) {\n return false;\n }\n\n if (\n !CCAP_JsonParse_Util.jsonQuoteRepairWhitespaceRunHasLineFeed(\n jsonText,\n wsStart,\n k,\n )\n ) {\n return false;\n }\n\n if (k >= jsonText.length || jsonText[k] !== '\"') {\n return false;\n }\n\n return CCAP_JsonParse_Util.jsonQuoteRepairStringAtLooksLikeKeyThenColon(jsonText, k);\n }\n\n /**\n * Külső (nem string) `,`: a legbelüli object frame phase → key (következő property név).\n */\n private static jsonQuoteRepairApplyCommaToInnermostObject(stack: Array<\n | { kind: 'object'; phase: 'key' | 'value' }\n | { kind: 'array' }\n >): void {\n for (let s: number = stack.length - 1; s >= 0; s--) {\n const f:\n | { kind: 'object'; phase: 'key' | 'value' }\n | { kind: 'array' } = stack[s];\n\n if (f.kind === 'array') {\n return;\n }\n\n if (f.kind === 'object') {\n f.phase = 'key';\n return;\n }\n }\n }\n\n /**\n * Külső `:`: a legbelüli object frame phase → value (kulcs után érték jön).\n */\n private static jsonQuoteRepairApplyColonToInnermostObject(stack: Array<\n | { kind: 'object'; phase: 'key' | 'value' }\n | { kind: 'array' }\n >): void {\n for (let s: number = stack.length - 1; s >= 0; s--) {\n const f:\n | { kind: 'object'; phase: 'key' | 'value' }\n | { kind: 'array' } = stack[s];\n\n if (f.kind === 'object') {\n f.phase = 'value';\n return;\n }\n }\n }\n\n /**\n * Megnyitó `\"` szerepe: array elem és object value-fázis → value; object key-fázis → key; üres stack → value (string\n * root edge case).\n */\n private static jsonQuoteRepairResolveStringRoleForOpenQuote(stack: Array<\n | { kind: 'object'; phase: 'key' | 'value' }\n | { kind: 'array' }\n >): 'key' | 'value' {\n for (let s: number = stack.length - 1; s >= 0; s--) {\n const f:\n | { kind: 'object'; phase: 'key' | 'value' }\n | { kind: 'array' } = stack[s];\n\n if (f.kind === 'array') {\n return 'value';\n }\n\n if (f.kind === 'object') {\n if (f.phase === 'key') {\n return 'key';\n }\n\n return 'value';\n }\n }\n\n return 'value';\n }\n\n /**\n * Run-finalization (és hasonló) LLM-hibák javítása: az `executionSummaryForUser` első string értéke után\n * önálló `\"- …\",` sorok (mintha JSON array lenne) érvénytelen objektumot adnak — ezeket egy stringgé fűzi\n * (`\\\\n` elválasztóval), hogy strict JSON.parse sikerüljön.\n */\n private static repairExecutionSummaryForUserOrphanSiblingStrings(jsonText: string): string {\n const keyNeedle: string = '\"executionSummaryForUser\"';\n const keyIdx: number = jsonText.indexOf(keyNeedle);\n\n if (keyIdx === -1) {\n return jsonText;\n }\n\n let i: number = keyIdx + keyNeedle.length;\n\n while (i < jsonText.length && CCAP_JsonParse_Util.isJsonWhitespaceChar(jsonText[i])) {\n i += 1;\n }\n\n if (i >= jsonText.length || jsonText[i] !== ':') {\n return jsonText;\n }\n\n i += 1;\n\n while (i < jsonText.length && CCAP_JsonParse_Util.isJsonWhitespaceChar(jsonText[i])) {\n i += 1;\n }\n\n if (i >= jsonText.length || jsonText[i] !== '\"') {\n return jsonText;\n }\n\n const firstStringOpenIdx: number = i;\n const firstRead:\n | { decoded: string; cursorAfterClosingQuote: number }\n | undefined = CCAP_JsonParse_Util.readJsonDoubleQuotedStringDecodedAt(jsonText, firstStringOpenIdx);\n\n if (!firstRead) {\n return jsonText;\n }\n\n const mergedParts: string[] = [firstRead.decoded];\n let pos: number = firstRead.cursorAfterClosingQuote;\n\n pos = CCAP_JsonParse_Util.skipJsonWhitespace(jsonText, pos);\n\n if (pos >= jsonText.length || jsonText[pos] !== ',') {\n return jsonText;\n }\n\n pos += 1;\n pos = CCAP_JsonParse_Util.skipJsonWhitespace(jsonText, pos);\n\n let replaceEndExclusive: number | undefined = undefined;\n\n while (pos < jsonText.length && jsonText[pos] === '\"') {\n const orphanRead:\n | { decoded: string; cursorAfterClosingQuote: number }\n | undefined = CCAP_JsonParse_Util.readJsonDoubleQuotedStringDecodedAt(jsonText, pos);\n\n if (!orphanRead) {\n break;\n }\n\n let afterOrphan: number = CCAP_JsonParse_Util.skipJsonWhitespace(\n jsonText,\n orphanRead.cursorAfterClosingQuote,\n );\n\n if (afterOrphan < jsonText.length && jsonText[afterOrphan] === ':') {\n break;\n }\n\n if (afterOrphan < jsonText.length && jsonText[afterOrphan] === ',') {\n mergedParts.push(orphanRead.decoded);\n replaceEndExclusive = afterOrphan + 1;\n pos = CCAP_JsonParse_Util.skipJsonWhitespace(jsonText, afterOrphan + 1);\n continue;\n }\n\n break;\n }\n\n if (mergedParts.length === 1 || replaceEndExclusive === undefined) {\n return jsonText;\n }\n\n const mergedJsonString: string = JSON.stringify(mergedParts.join('\\n'));\n const before: string = jsonText.slice(0, firstStringOpenIdx);\n const after: string = jsonText.slice(replaceEndExclusive);\n\n return before + mergedJsonString + ',' + after;\n }\n\n /**\n * JSON string literál (nyitó `\"` indexe) beolvasása és decode; visszaadja a tartalmat és a záró `\"` utáni indexet.\n */\n private static readJsonDoubleQuotedStringDecodedAt(\n text: string,\n openQuoteIdx: number,\n ): { decoded: string; cursorAfterClosingQuote: number } | undefined {\n if (openQuoteIdx >= text.length || text[openQuoteIdx] !== '\"') {\n return undefined;\n }\n\n let idx: number = openQuoteIdx + 1;\n let decoded: string = '';\n\n while (idx < text.length) {\n const c: string = text[idx];\n\n if (c === '\"') {\n return { decoded: decoded, cursorAfterClosingQuote: idx + 1 };\n }\n\n if (c === '\\\\') {\n if (idx + 1 >= text.length) {\n return undefined;\n }\n\n const esc: string = text[idx + 1];\n\n if (esc === '\"' || esc === '\\\\' || esc === '/') {\n decoded += esc;\n idx += 2;\n continue;\n }\n\n if (esc === 'b') {\n decoded += '\\b';\n idx += 2;\n continue;\n }\n\n if (esc === 'f') {\n decoded += '\\f';\n idx += 2;\n continue;\n }\n\n if (esc === 'n') {\n decoded += '\\n';\n idx += 2;\n continue;\n }\n\n if (esc === 'r') {\n decoded += '\\r';\n idx += 2;\n continue;\n }\n\n if (esc === 't') {\n decoded += '\\t';\n idx += 2;\n continue;\n }\n\n if (esc === 'u') {\n if (idx + 6 > text.length) {\n return undefined;\n }\n\n const hex: string = text.slice(idx + 2, idx + 6);\n\n if (!/^[0-9a-fA-F]{4}$/.test(hex)) {\n return undefined;\n }\n\n const codePoint: number = Number.parseInt(hex, 16);\n decoded += String.fromCharCode(codePoint);\n idx += 6;\n continue;\n }\n\n decoded += esc;\n idx += 2;\n continue;\n }\n\n decoded += c;\n idx += 1;\n }\n\n return undefined;\n }\n\n /**\n * JSON whitespace (SPACE / TAB / CR / LF) átugrása; visszaadott index első nem-whitespace vagy length.\n */\n private static skipJsonWhitespace(text: string, start: number): number {\n let p: number = start;\n\n while (p < text.length && CCAP_JsonParse_Util.isJsonWhitespaceChar(text[p])) {\n p += 1;\n }\n\n return p;\n }\n\n /**\n * JSON szintaxis whitespace-e (stringen kívüli).\n */\n private static isJsonWhitespaceChar(c: string): boolean {\n return c === ' ' || c === '\\t' || c === '\\n' || c === '\\r';\n }\n\n /**\n * JSON-szerű szövegből trailing comma eltávolítása `}` / `]` előtt (string literálokon kívül).\n */\n private static relaxTrailingCommasInJsonLikeText(text: string): string {\n let current: string = text;\n const maxPasses: number = 32;\n\n for (let pass: number = 0; pass < maxPasses; pass++) {\n const next: string = CCAP_JsonParse_Util.relaxTrailingCommasInJsonLikeTextOnce(current);\n\n if (next === current) {\n return current;\n }\n\n current = next;\n }\n\n return current;\n }\n\n /**\n * Egy menet: vessző kihagyása, ha utána csak whitespace van, majd `}` vagy `]`.\n */\n private static relaxTrailingCommasInJsonLikeTextOnce(text: string): string {\n let out: string = '';\n let inString: boolean = false;\n let escapeNext: boolean = false;\n\n for (let i: number = 0; i < text.length; i++) {\n const c: string = text[i];\n\n if (escapeNext) {\n out += c;\n escapeNext = false;\n continue;\n }\n\n if (inString) {\n if (c === '\\\\') {\n out += c;\n escapeNext = true;\n continue;\n }\n if (c === '\"') {\n inString = false;\n }\n out += c;\n continue;\n }\n\n if (c === '\"') {\n inString = true;\n out += c;\n continue;\n }\n\n if (c === ',') {\n let j: number = i + 1;\n\n while (j < text.length) {\n const ch: string = text[j];\n\n if (ch === ' ' || ch === '\\t' || ch === '\\n' || ch === '\\r') {\n j += 1;\n continue;\n }\n\n break;\n }\n\n if (j < text.length) {\n const nextSignificant: string = text[j];\n\n if (nextSignificant === '}' || nextSignificant === ']') {\n continue;\n }\n }\n }\n\n out += c;\n }\n\n return out;\n }\n\n /**\n * JSON text-ben a string literal-okon belüli nyers ASCII control character-eket (U+0000–U+001F)\n * JSON escape sequence-re cseréli.\n */\n private static sanitizeRawControlCharsInsideJsonStrings(jsonText: string): string {\n let result: string = '';\n let inString: boolean = false;\n let escapeNext: boolean = false;\n\n for (let i: number = 0; i < jsonText.length; i++) {\n const c: string = jsonText[i];\n\n if (escapeNext) {\n result += c;\n escapeNext = false;\n continue;\n }\n\n if (inString) {\n if (c === '\\\\') {\n result += c;\n escapeNext = true;\n continue;\n }\n if (c === '\"') {\n inString = false;\n result += c;\n continue;\n }\n\n const code: number = c.charCodeAt(0);\n\n if (code <= 0x1f) {\n if (code === 0x08) {\n result += '\\\\b';\n } else if (code === 0x09) {\n result += '\\\\t';\n } else if (code === 0x0a) {\n result += '\\\\n';\n } else if (code === 0x0c) {\n result += '\\\\f';\n } else if (code === 0x0d) {\n result += '\\\\r';\n } else {\n const hex: string = code.toString(16).padStart(4, '0');\n result += '\\\\u' + hex;\n }\n continue;\n }\n\n result += c;\n continue;\n }\n\n if (c === '\"') {\n inString = true;\n }\n result += c;\n }\n\n return result;\n }\n\n // --- belső: failure építés ---\n\n /**\n * tryParseStrict catch ágában: failure + originalError a cause lánc számára.\n */\n private static buildFailureFromParseError(params: {\n error: unknown;\n sourceText: string;\n contextLabel: string;\n phase: CCAP_JsonParsePhase_Type;\n }): CCAP_JsonParseFailure_Interface {\n const rawMessage: string =\n params.error instanceof Error ? params.error.message : String(params.error);\n const position: number | undefined = CCAP_JsonParse_Util.readJsonParseErrorPosition(\n params.error,\n params.sourceText,\n );\n const lineCol: { line: number; column: number } | undefined =\n position !== undefined\n ? CCAP_JsonParse_Util.oneBasedLineColumnFromOffset(params.sourceText, position)\n : undefined;\n const snippetAroundError: string | undefined =\n position !== undefined\n ? CCAP_JsonParse_Util.buildSnippetAroundPosition(params.sourceText, position)\n : undefined;\n const summaryMessage: string =\n `JSON parse failed [${params.contextLabel}] (${params.phase}): ${rawMessage}`;\n\n return {\n phase: params.phase,\n contextLabel: params.contextLabel,\n rawMessage: rawMessage,\n summaryMessage: summaryMessage,\n position: position,\n line: lineCol?.line,\n column: lineCol?.column,\n inputLength: params.sourceText.length,\n snippetAroundError: snippetAroundError,\n originalError: params.error,\n };\n }\n\n private static buildSnippetAroundPosition(text: string, pos: number): string | undefined {\n if (pos < 0 || pos > text.length) {\n return undefined;\n }\n\n const start: number = Math.max(0, pos - JSON_PARSE_SNIPPET_RADIUS);\n const end: number = Math.min(text.length, pos + JSON_PARSE_SNIPPET_RADIUS);\n const slice: string = text.slice(start, end);\n const rel: number = pos - start;\n const pointer: string = ' '.repeat(Math.max(0, rel)) + '^';\n\n return `${slice}\\n${pointer}`;\n }\n\n private static oneBasedLineColumnFromOffset(\n text: string,\n offset: number,\n ): { line: number; column: number } | undefined {\n if (offset < 0 || offset > text.length) {\n return undefined;\n }\n\n let line: number = 1;\n let lineStart: number = 0;\n\n for (let i: number = 0; i < offset; i++) {\n if (text[i] === '\\n') {\n line += 1;\n lineStart = i + 1;\n }\n }\n\n const column: number = offset - lineStart + 1;\n\n return { line: line, column: column };\n }\n\n /**\n * 1-alapú line/column → karakter offset (LF elválasztó).\n */\n private static offsetFromOneBasedLineColumn(\n text: string,\n line: number,\n column: number,\n ): number | undefined {\n if (line < 1 || column < 1) {\n return undefined;\n }\n\n const lines: string[] = text.split('\\n');\n\n if (line > lines.length) {\n return undefined;\n }\n\n let offset: number = 0;\n\n for (let li: number = 0; li < line - 1; li++) {\n offset += lines[li].length + 1;\n }\n\n const colIndex: number = column - 1;\n const lineText: string = lines[line - 1];\n\n if (colIndex > lineText.length) {\n return undefined;\n }\n\n return offset + colIndex;\n }\n\n /**\n * JSON.parse SyntaxError pozíció kiolvasása.\n */\n private static readJsonParseErrorPosition(\n error: unknown,\n sourceText?: string,\n ): number | undefined {\n if (typeof error !== 'object' || error === null) {\n return undefined;\n }\n\n if ('position' in error) {\n const fromField: unknown = Reflect.get(error, 'position');\n\n if (typeof fromField === 'number' && fromField >= 0 && Number.isFinite(fromField)) {\n return Math.floor(fromField);\n }\n }\n\n if (error instanceof Error) {\n const msg: string = error.message;\n const m1: RegExpMatchArray | null = msg.match(/at position (\\d+)/i);\n\n if (m1?.[1]) {\n const n: number = Number.parseInt(m1[1], 10);\n\n if (!Number.isNaN(n)) {\n return n;\n }\n }\n\n const m2: RegExpMatchArray | null = msg.match(/position (\\d+)/i);\n\n if (m2?.[1]) {\n const n: number = Number.parseInt(m2[1], 10);\n\n if (!Number.isNaN(n)) {\n return n;\n }\n }\n\n if (sourceText !== undefined && sourceText.length > 0) {\n const m3: RegExpMatchArray | null = msg.match(/\\bline (\\d+) column (\\d+)\\b/i);\n\n if (m3?.[1] && m3?.[2]) {\n const lineNum: number = Number.parseInt(m3[1], 10);\n const colNum: number = Number.parseInt(m3[2], 10);\n const fromLc: number | undefined = CCAP_JsonParse_Util.offsetFromOneBasedLineColumn(\n sourceText,\n lineNum,\n colNum,\n );\n\n if (fromLc !== undefined) {\n return fromLc;\n }\n }\n }\n }\n\n return undefined;\n }\n}\n", "/**\n * JSON parse failure fázis — hol / milyen útvonalon történt a hiba (diagnosztika, telemetria).\n */\nexport enum CCAP_JsonParsePhase_Type {\n strictParse = 'strict-parse',\n llmExtract = 'llm-extract',\n llmPrepare = 'llm-prepare',\n llmParse = 'llm-parse',\n}\n", "import { Component, input, computed, effect, signal, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { HttpErrorResponse } from '@angular/common/http';\n\nimport { CCAP_JsonParse_Util } from '@server/_collections/ccap-json-parse/ccap-json-parse.util';\n\nimport { DyFM_Log, second } from '@futdevpro/fsm-dynamo';\n\nimport { CCAP_ErrorDisplay_Util } from '../../_collections/error/error-display.util';\nimport { CCAP_HttpErrorMessage_Util } from '../../_collections/error/http-error-message.util';\nimport { CCAP_HttpErrorTroubleshootingHint_Util } from '../../_collections/error/ccap-http-error-troubleshooting-hint.util';\nimport { CCAP_Ng0203Diagnostic_Util } from '../../_collections/error/ng0203-diagnostic.util';\nimport { CCAP_Ng0600Diagnostic_Util } from '../../_collections/error/ng0600-diagnostic.util';\nimport { CCAP_Ng0203DiagnosticResult_Interface } from '../../_models/interfaces/feedback-errors/ccap-ng0203-diagnostic-result.interface';\nimport { CCAP_Ng0600DiagnosticResult_Interface } from '../../_models/interfaces/feedback-errors/ccap-ng0600-diagnostic-result.interface';\nimport { CCAP_ErrorTroubleshootingHint_Interface } from '../../_models/interfaces/ccap-error-troubleshooting-hint.interface';\nimport { CCAP_GlobalError_ControlService } from '../../_services/control-services/ccap-global-error.control-service';\nimport { UserInput_DataService } from '../../_modules/user-input/_services/user-input.data-service';\n\n/**\n * Univerzális hiba megjelenítő: egyetlen komponens, bármilyen error (unknown).\n * Input: error (nyers), opcionális sourceLabel. A komponens magában parszolja (Dynamo + util),\n * value change-re computed signalök újrafutnak → mindig friss megjelenítés. Inline és popup belsejében is használható.\n * HTTP Blob body (pl. responseType: 'blob' hibaválasz): aszinkron kiolvasás, majd megjelenítés.\n * Részletek (JSON) és stack trace szekciók alapból zárva, gombbal nyithatók; új error input-nál visszazáródnak.\n * NG0600 / NG0203: ha nincs szülői diagnosztika input, helyi diagnosztika `setTimeout(0)`-pal —\n * nem fut reaktív kontextusban (nem triggerel újabb signal / inject hibát).\n */\n@Component({\n selector: 'app-ccap-error-display',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './ccap-error-display.component.html',\n})\n/** CCAP_ErrorDisplay_Component class. */\nexport class CCAP_ErrorDisplay_Component {\n\n /** Megjelenítendő hiba (nyers); null esetén nem rajzol semmit. */\n error = input<unknown | null>(null);\n\n /** Opcionális source címke felülírás (pl. \"Run sikertelen\", \"Teszt futtatás hiba\"). */\n sourceLabelOverride = input<string | undefined>(undefined);\n\n /** Globális showError forrás string (modal pipeline-ból); részletek JSON + külön szekció. */\n errorClientSource = input<string | undefined>(undefined);\n\n /** NG0600 diagnosztika (globális error service tölti); nincs reaktív kontextusban generálva. */\n ng0600Diagnostics = input<CCAP_Ng0600DiagnosticResult_Interface | null>(null);\n\n /** NG0203 diagnosztika (globális error service tölti); nincs reaktív kontextusban generálva. */\n ng0203Diagnostics = input<CCAP_Ng0203DiagnosticResult_Interface | null>(null);\n\n /** Aszinkron kiolvasott üzenet, ha a response body Blob volt (JSON detail/error). */\n readonly parsedBlobMessage_$ = signal<string | null>(null);\n\n /** Source map-pel feloldott stack; null ha még nincs kész vagy nincs stack. */\n readonly resolvedStack_$ = signal<string | null>(null);\n\n /** Részletek (JSON) blokk kinyitva-e (alapból zárva). */\n readonly detailsExpanded_$ = signal<boolean>(false);\n\n /** Stack trace blokk kinyitva-e (alapból zárva). */\n readonly stackExpanded_$ = signal<boolean>(false);\n\n /** NG0600 diagnosztikai lépések blokk kinyitva-e (alapból zárva). */\n readonly ng0600SectionExpanded_$ = signal<boolean>(false);\n\n /** NG0203 diagnosztikai lépések blokk kinyitva-e (alapból zárva). */\n readonly ng0203SectionExpanded_$ = signal<boolean>(false);\n\n /**\n * Inline / overlay error-display: NG0600 diagnosztika, ha nincs szülőtől átadott `ng0600Diagnostics` input.\n */\n readonly localNg0600Diagnostics_$ = signal<CCAP_Ng0600DiagnosticResult_Interface | null>(null);\n\n /**\n * Inline / overlay error-display: NG0203 diagnosztika, ha nincs szülőtől átadott `ng0203Diagnostics` input.\n */\n readonly localNg0203Diagnostics_$ = signal<CCAP_Ng0203DiagnosticResult_Interface | null>(null);\n\n private readonly globalError_CS: CCAP_GlobalError_ControlService = inject(CCAP_GlobalError_ControlService);\n private readonly userInput_DS: UserInput_DataService = inject(UserInput_DataService);\n\n /** Modal átadás vagy helyi fallback összevonása a template + részletek JSON számára. */\n readonly effectiveNg0600Diagnostics_$ = computed((): CCAP_Ng0600DiagnosticResult_Interface | null => {\n const injected: CCAP_Ng0600DiagnosticResult_Interface | null = this.ng0600Diagnostics();\n if (injected != null) {\n return injected;\n }\n return this.localNg0600Diagnostics_$();\n });\n\n readonly effectiveNg0203Diagnostics_$ = computed((): CCAP_Ng0203DiagnosticResult_Interface | null => {\n const injected: CCAP_Ng0203DiagnosticResult_Interface | null = this.ng0203Diagnostics();\n if (injected != null) {\n return injected;\n }\n return this.localNg0203Diagnostics_$();\n });\n\n /** Megjelenítésre biztonságos message (computed). */\n readonly displayMessage_$ = computed((): string => {\n const raw: unknown | null = this.error();\n if (raw == null) {\n return '';\n }\n if (raw instanceof HttpErrorResponse) {\n const responseBody: unknown = raw.error ?? null;\n let bodyMessage: string | null = this.parsedBlobMessage_$();\n if (bodyMessage === null) {\n bodyMessage = CCAP_ErrorDisplay_Component.getBodyMessageFromResponse(responseBody);\n }\n if (bodyMessage === null && typeof responseBody === 'string' && responseBody.trim().startsWith('{')) {\n const strictErr = CCAP_JsonParse_Util.tryParseStrict({\n text: responseBody,\n contextLabel: 'CCAP_ErrorDisplay_http_string_body',\n });\n\n if (strictErr.ok) {\n bodyMessage = CCAP_ErrorDisplay_Component.getBodyMessageFromResponse(strictErr.value);\n }\n }\n if (bodyMessage === '[object Object]' || (bodyMessage?.trim() === '[object Object]')) {\n bodyMessage = responseBody !== null && typeof responseBody === 'object'\n ? CCAP_ErrorDisplay_Util.getErrorMessageForDisplay(responseBody)\n : bodyMessage;\n }\n return CCAP_ErrorDisplay_Util.toDisplaySafeString(CCAP_HttpErrorMessage_Util.getHttpErrorMessage(raw, bodyMessage));\n }\n return CCAP_ErrorDisplay_Util.toDisplaySafeString(CCAP_ErrorDisplay_Util.getErrorMessageForDisplay(raw));\n });\n\n /**\n * Ismert DyFM error code-hoz felhasználói útmutató + hivatalos doc linkek (pl. CA Agent spawn ENOENT).\n */\n readonly httpTroubleshootingHint_$ = computed((): CCAP_ErrorTroubleshootingHint_Interface | null => {\n const raw: unknown | null = this.error();\n if (raw == null) {\n return null;\n }\n return CCAP_HttpErrorTroubleshootingHint_Util.tryGetHintForUnknownError({ error: raw });\n });\n\n /** Megjelenítésre biztonságos detailsText (computed). */\n readonly displayDetailsText_$ = computed((): string => {\n const raw: unknown | null = this.error();\n if (raw == null) {\n return '';\n }\n if (raw instanceof HttpErrorResponse) {\n const responseBody: unknown = raw.error ?? null;\n const detailsObj: Record<string, unknown> = {\n status: raw.status,\n statusText: raw.statusText,\n url: raw.url ?? null,\n responseBody: responseBody,\n message: raw.message,\n };\n return CCAP_ErrorDisplay_Util.toDisplaySafeString(JSON.stringify(detailsObj, null, 2));\n }\n const message: string = CCAP_ErrorDisplay_Util.getErrorMessageForDisplay(raw);\n const fullMessage: string = CCAP_ErrorDisplay_Util.getFullErrorMessageForDisplay(raw);\n const name: string | undefined =\n raw instanceof Error\n ? raw.name\n : (typeof (raw as Record<string, unknown>)['name'] === 'string'\n ? (raw as Record<string, string>)['name']\n : undefined);\n const stack: string | null =\n raw instanceof Error\n ? raw.stack ?? null\n : (typeof (raw as Record<string, unknown>)['stack'] === 'string'\n ? (raw as Record<string, string>)['stack']\n : (raw as Record<string, unknown>)['stack'] != null\n ? String((raw as Record<string, unknown>)['stack'])\n : null);\n const causeMsg: string | undefined =\n raw instanceof Error && 'cause' in raw && (raw as Error & { cause?: unknown }).cause != null\n ? CCAP_ErrorDisplay_Util.getErrorMessageForDisplay((raw as Error & { cause: unknown }).cause)\n : undefined;\n const detailsObj: Record<string, unknown> = {\n message: message,\n fullMessage: fullMessage,\n name: name,\n stack: stack,\n ...(causeMsg !== undefined ? { cause: causeMsg } : {}),\n };\n const clientSrc: string | undefined = this.errorClientSource();\n if (clientSrc != null && clientSrc.trim().length > 0) {\n detailsObj.ccapClientSource = clientSrc.trim();\n }\n const ng0600Effective: CCAP_Ng0600DiagnosticResult_Interface | null =\n this.ng0600Diagnostics() ?? this.localNg0600Diagnostics_$();\n if (message === 'NG0600') {\n if (ng0600Effective != null) {\n detailsObj.ng0600Diagnostics = ng0600Effective;\n } else {\n detailsObj.ng0600Detail =\n 'Angular NG0600: signal write inside reactive context (computed, effect, or template).';\n }\n }\n const ng0203Effective: CCAP_Ng0203DiagnosticResult_Interface | null =\n this.ng0203Diagnostics() ?? this.localNg0203Diagnostics_$();\n if (message === 'NG0203') {\n if (ng0203Effective != null) {\n detailsObj.ng0203Diagnostics = ng0203Effective;\n } else {\n detailsObj.ng0203Detail =\n 'Angular NG0203: inject() outside injection context (see https://angular.dev/errors/NG0203).';\n }\n }\n if (raw !== null && typeof raw === 'object') {\n const rec: Record<string, unknown> = raw as Record<string, unknown>;\n // Ha a raw objektum saját fullMessage-t tartalmaz (pl. socket error bővített diagnosztikával), használjuk azt\n if (typeof rec.fullMessage === 'string' && rec.fullMessage.trim() && rec.fullMessage !== detailsObj.fullMessage) {\n detailsObj.fullMessage = rec.fullMessage;\n }\n if (rec.socketUrl !== undefined) {\n detailsObj.socketUrl = rec.socketUrl;\n }\n if (rec.transport !== undefined) {\n detailsObj.transport = rec.transport;\n }\n if (rec.eventType !== undefined) {\n detailsObj.eventType = rec.eventType;\n }\n if (rec.connectAttempt !== undefined) {\n detailsObj.connectAttempt = rec.connectAttempt;\n }\n if (rec.socketUrlSource !== undefined) {\n detailsObj.socketUrlSource = rec.socketUrlSource;\n }\n if (rec.configuredTransports !== undefined) {\n detailsObj.configuredTransports = rec.configuredTransports;\n }\n if (rec.pageOrigin !== undefined) {\n detailsObj.pageOrigin = rec.pageOrigin;\n }\n if (rec.description !== undefined) {\n detailsObj.description = rec.description;\n }\n if (rec.descriptionStack !== undefined) {\n detailsObj.descriptionStack = rec.descriptionStack;\n }\n if (rec.httpStatus !== undefined) {\n detailsObj.httpStatus = rec.httpStatus;\n }\n if (rec.httpStatusText !== undefined) {\n detailsObj.httpStatusText = rec.httpStatusText;\n }\n if (rec.responseUrl !== undefined) {\n detailsObj.responseUrl = rec.responseUrl;\n }\n if (rec.errorContext !== undefined) {\n detailsObj.errorContext = rec.errorContext;\n }\n if (rec.attemptedAt !== undefined) {\n detailsObj.attemptedAt = rec.attemptedAt;\n }\n if (rec.screenId !== undefined) {\n detailsObj.screenId = rec.screenId;\n }\n if (rec.displayKey !== undefined) {\n detailsObj.displayKey = rec.displayKey;\n }\n if (rec.slotName !== undefined) {\n detailsObj.slotName = rec.slotName;\n }\n if (rec.urlType !== undefined) {\n detailsObj.urlType = rec.urlType;\n }\n if (rec.context !== undefined) {\n detailsObj.context = rec.context;\n }\n if (rec.errorCode !== undefined) {\n detailsObj.errorCode = rec.errorCode;\n }\n if (rec.additionalContent !== undefined) {\n detailsObj.additionalContent = rec.additionalContent;\n }\n if (rec.troubleshootingHints !== undefined) {\n detailsObj.troubleshootingHints = rec.troubleshootingHints;\n }\n if (rec.diagnosis !== undefined) {\n detailsObj.diagnosis = rec.diagnosis;\n }\n if (message === 'websocket error') {\n detailsObj.websocketDetail =\n 'Socket.IO client: underlying WebSocket failed (e.g. server unreachable, CORS, wrong URL).';\n }\n }\n return CCAP_ErrorDisplay_Util.toDisplaySafeString(JSON.stringify(detailsObj, null, 2));\n });\n\n /** Megjelenítésre biztonságos stack (computed). */\n readonly displayStack_$ = computed((): string => {\n const raw: unknown | null = this.error();\n if (raw == null) {\n return '';\n }\n if (raw instanceof HttpErrorResponse) {\n const errBody: unknown = raw.error;\n const serverStack: string | null =\n (typeof errBody === 'object' && errBody !== null && 'stack' in errBody\n && typeof (errBody as Record<string, unknown>)['stack'] === 'string')\n ? (errBody as Record<string, string>)['stack']\n : null;\n const responseBody: unknown = raw.error ?? null;\n const httpContext: string =\n `HTTP ${raw.status} ${raw.statusText}\\n${raw.url ?? ''}\\n\\nResponse body:\\n${\n JSON.stringify(responseBody, null, 2)\n }`;\n return CCAP_ErrorDisplay_Util.toDisplaySafeString(serverStack ?? httpContext);\n }\n const stack: string | null =\n raw instanceof Error\n ? raw.stack ?? null\n : (raw !== null && typeof raw === 'object' && (raw as Record<string, unknown>)['stack'] != null\n ? String((raw as Record<string, unknown>)['stack'])\n : null);\n return stack != null ? CCAP_ErrorDisplay_Util.toDisplaySafeString(stack) : '';\n });\n\n /** Van-e megjeleníthető stack szekció (nyers vagy feloldott). */\n readonly hasStackSection_$ = computed((): boolean => {\n const resolved: string | null = this.resolvedStack_$();\n if (resolved != null && resolved.trim().length > 0) {\n return true;\n }\n const raw: string = this.displayStack_$();\n return raw.trim().length > 0;\n });\n\n /** Van-e HTTP kontextus (computed). */\n readonly hasHttpInfo_$ = computed((): boolean => this.error() instanceof HttpErrorResponse);\n\n /** HTTP url (computed). */\n readonly httpUrl_$ = computed((): string => {\n const raw: unknown = this.error();\n return raw instanceof HttpErrorResponse ? (raw.url ?? '') : '';\n });\n\n /** HTTP status (computed). */\n readonly httpStatus_$ = computed((): number => {\n const raw: unknown = this.error();\n return raw instanceof HttpErrorResponse ? raw.status : 0;\n });\n\n /** HTTP statusText (computed). */\n readonly httpStatusText_$ = computed((): string => {\n const raw: unknown = this.error();\n return raw instanceof HttpErrorResponse ? raw.statusText : '';\n });\n\n /**\n * Részletek (JSON) szekció kinyitása / bezárása.\n */\n toggleDetailsExpanded(): void {\n this.detailsExpanded_$.update((v: boolean): boolean => !v);\n }\n\n /**\n * Stack trace szekció kinyitása / bezárása.\n */\n toggleStackExpanded(): void {\n this.stackExpanded_$.update((v: boolean): boolean => !v);\n }\n\n /**\n * NG0600 diagnosztikai szekció kinyitása / bezárása.\n */\n toggleNg0600SectionExpanded(): void {\n this.ng0600SectionExpanded_$.update((v: boolean): boolean => !v);\n }\n\n /**\n * NG0203 diagnosztikai szekció kinyitása / bezárása.\n */\n toggleNg0203SectionExpanded(): void {\n this.ng0203SectionExpanded_$.update((v: boolean): boolean => !v);\n }\n\n /** Stack szöveg megjelenítéshez: source map-pel feloldott, ha már kész, különben nyers (template @if). */\n getDisplayStack(): string {\n const resolved: string | null = this.resolvedStack_$();\n if (resolved != null && resolved.length > 0) {\n return resolved;\n }\n return this.displayStack_$();\n }\n\n /** Source címke: override vagy inferált (computed). */\n readonly sourceLabel_$ = computed((): string => {\n const override: string | undefined = this.sourceLabelOverride();\n if (override != null && override.trim().length > 0) {\n return override.trim();\n }\n const raw: unknown = this.error();\n if (raw instanceof HttpErrorResponse) {\n return 'HTTP hiba';\n }\n return 'Alkalmazás hiba';\n });\n\n /** Copy gomb visszajelzés: \"Másolva!\" ha sikeres. */\n copyFeedback: string = '';\n\n /** Send-to-Quick-Input gomb visszajelzés (REQ-UI-ERR-001). */\n quickInputFeedback: string = '';\n\n /** Send-to-Quick-Input művelet folyamatban (gomb disabled). */\n isSendingToQuickInput_$ = signal<boolean>(false);\n\n /** 2 másodperc után törli a copyFeedback / quickInputFeedback-et. */\n private static readonly copyFeedbackResetMs: number = 2 * second;\n\n constructor() {\n // Csak az error input változásakor fut: részletek és stack blokk visszaáll zártra (microtask nélkül,\n // különben egy későbbi microtask felülírhatná a felhasználó kinyitását ugyanabban a tick-ben).\n effect((): void => {\n void this.error();\n this.detailsExpanded_$.set(false);\n this.stackExpanded_$.set(false);\n this.ng0600SectionExpanded_$.set(false);\n this.ng0203SectionExpanded_$.set(false);\n this.localNg0600Diagnostics_$.set(null);\n this.localNg0203Diagnostics_$.set(null);\n }, { allowSignalWrites: true });\n\n effect((): void => {\n const raw: unknown | null = this.error();\n if (raw instanceof HttpErrorResponse && raw.error instanceof Blob) {\n const blob: Blob = raw.error;\n queueMicrotask((): void => {\n this.parsedBlobMessage_$.set(null);\n });\n blob.text().then((s: string): void => {\n const blobParse = CCAP_JsonParse_Util.tryParseStrict({\n text: s,\n contextLabel: 'CCAP_ErrorDisplay_blob_body',\n });\n\n let value: string | null = null;\n\n if (\n blobParse.ok\n && blobParse.value !== null\n && typeof blobParse.value === 'object'\n && !Array.isArray(blobParse.value)\n ) {\n const obj: Record<string, unknown> = Object.fromEntries(\n Object.entries(blobParse.value),\n );\n const msg: unknown = obj.error ?? obj.detail ?? null;\n value = typeof msg === 'string' && msg.trim() ? msg : null;\n }\n\n queueMicrotask((): void => {\n this.parsedBlobMessage_$.set(value);\n });\n }).catch((): void => {\n queueMicrotask((): void => {\n this.parsedBlobMessage_$.set(null);\n });\n });\n } else {\n queueMicrotask((): void => {\n this.parsedBlobMessage_$.set(null);\n });\n }\n }, { allowSignalWrites: true });\n\n /**\n * NG0600 + nincs szülői diagnosztika input: diagnosztika késleltetve (nem computed / template közben).\n */\n effect((): void => {\n const raw: unknown | null = this.error();\n const injected: CCAP_Ng0600DiagnosticResult_Interface | null = this.ng0600Diagnostics();\n if (injected != null) {\n this.localNg0600Diagnostics_$.set(null);\n return;\n }\n if (raw == null) {\n this.localNg0600Diagnostics_$.set(null);\n return;\n }\n const msg: string = CCAP_ErrorDisplay_Util.getErrorMessageForDisplay(raw);\n if (!CCAP_Ng0600Diagnostic_Util.isNg0600Message(msg)) {\n this.localNg0600Diagnostics_$.set(null);\n return;\n }\n const stackForDiag: string | undefined = CCAP_ErrorDisplay_Util.getStackForReport(raw);\n const ctx = this.globalError_CS.getCurrentContext();\n const rawRef: unknown = raw;\n setTimeout((): void => {\n try {\n if (this.error() !== rawRef) {\n return;\n }\n const built: CCAP_Ng0600DiagnosticResult_Interface = CCAP_Ng0600Diagnostic_Util.buildDiagnostics({\n stack: stackForDiag,\n context: {\n route: ctx.route,\n url: ctx.url,\n userAgent: ctx.userAgent,\n timestamp: ctx.timestamp,\n },\n clientSource: undefined,\n });\n if (this.error() !== rawRef) {\n return;\n }\n this.localNg0600Diagnostics_$.set(built);\n } catch (e: unknown) {\n DyFM_Log.error('CCAP error-display NG0600 local diagnostics failed', e);\n }\n }, 0);\n }, { allowSignalWrites: true });\n\n /**\n * NG0203 + nincs szülői diagnosztika input: diagnosztika késleltetve (nem computed / template közben).\n */\n effect((): void => {\n const raw: unknown | null = this.error();\n const injected: CCAP_Ng0203DiagnosticResult_Interface | null = this.ng0203Diagnostics();\n if (injected != null) {\n this.localNg0203Diagnostics_$.set(null);\n return;\n }\n if (raw == null) {\n this.localNg0203Diagnostics_$.set(null);\n return;\n }\n const msg: string = CCAP_ErrorDisplay_Util.getErrorMessageForDisplay(raw);\n if (!CCAP_Ng0203Diagnostic_Util.isNg0203Message(msg)) {\n this.localNg0203Diagnostics_$.set(null);\n return;\n }\n const stackForDiag: string | undefined = CCAP_ErrorDisplay_Util.getStackForReport(raw);\n const ctx = this.globalError_CS.getCurrentContext();\n const rawRef: unknown = raw;\n setTimeout((): void => {\n try {\n if (this.error() !== rawRef) {\n return;\n }\n const built: CCAP_Ng0203DiagnosticResult_Interface = CCAP_Ng0203Diagnostic_Util.buildDiagnostics({\n stack: stackForDiag,\n context: {\n route: ctx.route,\n url: ctx.url,\n userAgent: ctx.userAgent,\n timestamp: ctx.timestamp,\n },\n clientSource: undefined,\n });\n if (this.error() !== rawRef) {\n return;\n }\n this.localNg0203Diagnostics_$.set(built);\n } catch (e: unknown) {\n DyFM_Log.error('CCAP error-display NG0203 local diagnostics failed', e);\n }\n }, 0);\n }, { allowSignalWrites: true });\n\n /* effect((): void => {\n const raw: string = this.displayStack_$();\n if (!raw || !raw.includes('at ') || !raw.includes('.js:')) {\n this.resolvedStack_$.set(null);\n return;\n }\n this.resolvedStack_$.set(null);\n resolveStackFromSourceMaps(raw).then((resolved: string): void => {\n setTimeout((): void => {\n this.resolvedStack_$.set(resolved);\n }, 0);\n }).catch((): void => {\n setTimeout((): void => {\n this.resolvedStack_$.set(null);\n }, 0);\n });\n }, { allowSignalWrites: true }); */\n }\n\n /** HTTP response body-ból kiolvasott error/message string (belső parsing). Blob nem olvasható szinkron, null. */\n private static getBodyMessageFromResponse(responseBody: unknown): string | null {\n if (responseBody === null || typeof responseBody !== 'object') {\n return null;\n }\n if (responseBody instanceof Blob) {\n return null;\n }\n const obj: Record<string, unknown> = responseBody as Record<string, unknown>;\n if (typeof obj.error === 'string' && obj.error.trim() && obj.error !== '[object Object]') {\n return obj.error;\n }\n if (typeof obj.detail === 'string' && obj.detail.trim() && obj.detail !== '[object Object]') {\n return obj.detail;\n }\n if (obj.error != null) {\n return CCAP_ErrorDisplay_Util.getErrorMessageForDisplay(obj.error);\n }\n if (typeof obj.message === 'string' && obj.message.trim() && obj.message !== '[object Object]') {\n return obj.message;\n }\n if (obj.message != null) {\n return CCAP_ErrorDisplay_Util.getErrorMessageForDisplay(obj.message);\n }\n return null;\n }\n\n /**\n * A teljes hiba szöveg (details + stack) összeállítása. Shared helper a Copy és a\n * Send-to-Quick-Input (REQ-UI-ERR-001) gombok közt.\n */\n buildErrorText(): string {\n const detailsText: string = this.displayDetailsText_$();\n const stackText: string = this.getDisplayStack();\n return [\n detailsText,\n stackText ? `\\n\\nStack:\\n${stackText}` : '',\n ].join('');\n }\n\n /**\n * Teljes hiba szöveg (details + stack) másolása a vágólapra.\n * Sikertelen esetben a clipboard hiba a hibalistába kerül (error-display-copy), visszajelzés piros.\n */\n async copyToClipboard(): Promise<void> {\n if (this.error() == null) {\n return;\n }\n const fullText: string = this.buildErrorText();\n const result = await this.globalError_CS.copyToClipboard(fullText);\n if (result.ok) {\n this.copyFeedback = 'Másolva!';\n setTimeout((): void => {\n this.copyFeedback = '';\n }, CCAP_ErrorDisplay_Component.copyFeedbackResetMs);\n } else {\n this.copyFeedback = 'Másolás sikertelen';\n this.globalError_CS.reportErrorOnly({\n message: CCAP_ErrorDisplay_Util.getErrorMessageForDisplay(result.error),\n source: 'error-display-copy',\n stack: CCAP_ErrorDisplay_Util.getStackForReport(result.error),\n });\n setTimeout((): void => {\n this.copyFeedback = '';\n }, CCAP_ErrorDisplay_Component.copyFeedbackResetMs);\n }\n }\n\n /**\n * Hiba szöveg beküldése Quick Input entry-ként (REQ-UI-ERR-001).\n * A user később a PM Quick Input hub-ból tudja feldolgozni — pl. BUG entry-t csinálhat\n * belőle. A cél-projekt a `UserInput_DataService.submitInput` döntése szerint választódik\n * (aktuálisan kiválasztott projekt vagy „Mind\" esetén az első elérhető).\n */\n async sendToQuickInput(): Promise<void> {\n if (this.error() == null || this.isSendingToQuickInput_$()) {\n return;\n }\n const fullText: string = this.buildErrorText();\n if (!fullText.trim()) {\n return;\n }\n this.isSendingToQuickInput_$.set(true);\n try {\n // BUG-UI-ERR-QI-SEND-001 (cycle 707): a globál error context-ben a user\n // nem tud panel-szintű projekt-szelekciót csinálni; submitInputForGlobalError\n // first-available projektet választ ha a panel \"Mind\" / üres-szelekcióban van.\n const ok: boolean = await this.userInput_DS.submitInputForGlobalError(fullText);\n this.quickInputFeedback = ok ? 'Quick Input létrehozva!' : 'Quick Input sikertelen — nincs elérhető projekt';\n // BUG-UI-ERR-QI-SEND-001 fail-error-also-saved (cycle 750): silent `false`\n // (no-projekt vagy server-validation reject) is rögzítendő — a /errors page\n // diagnosztika nélkül a user nem látja, miért nem ment a beküldés.\n if (!ok) {\n this.globalError_CS.reportErrorOnly({\n message: 'Send-to-Quick-Input returned false (likely: no available project or server-side validation reject)',\n source: 'send-to-quick-input-no-result',\n });\n }\n } catch (err: unknown) {\n this.quickInputFeedback = 'Quick Input sikertelen';\n // BUG-UI-ERR-QI-SEND-001 fail-error-also-saved (cycle 750): a user explicit\n // követelménye REQ-SYS-SILENT-001 alapján — a Send-to-QI maga ha hibát dob,\n // az is mentésre kerüljön a /errors-be, hogy ne két információt veszítsünk\n // (sem az eredeti hiba nem ment QI-ba, sem a send-fail nem jelenik meg sehol).\n const failMessage: string = err instanceof Error\n ? `Send-to-Quick-Input threw: ${err.message}`\n : `Send-to-Quick-Input threw: ${String(err)}`;\n this.globalError_CS.reportErrorOnly({\n message: failMessage,\n source: 'send-to-quick-input-fail',\n stack: err instanceof Error ? err.stack : undefined,\n });\n } finally {\n this.isSendingToQuickInput_$.set(false);\n setTimeout((): void => {\n this.quickInputFeedback = '';\n }, CCAP_ErrorDisplay_Component.copyFeedbackResetMs);\n }\n }\n}\n", "@if (error()) {\n <!-- flex + belső scroll: szülő modal max-magasságában a tartalom nem vágódik le (min-h-0 lánc). -->\n <div class=\"border-2 border-neonRed rounded-lg bg-neutral-800 shadow-lg flex flex-col max-h-full min-h-0\">\n <div class=\"flex items-center justify-between p-4 border-b border-neonRed/50 shrink-0\">\n <h2 class=\"text-lg font-semibold text-red-400\">{{ sourceLabel_$() }}</h2>\n <div class=\"flex items-center gap-2\">\n <button type=\"button\"\n class=\"p-2 min-h-[44px] min-w-[44px] flex items-center justify-center rounded\n text-neutral-300 hover:bg-neutral-600 hover:text-white transition-colors\"\n (click)=\"copyToClipboard()\"\n title=\"Másolás vágólapra\"\n aria-label=\"Másolás vágólapra\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" class=\"h-5 w-5\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\"\n d=\"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z\" />\n </svg>\n </button>\n @if (copyFeedback) {\n <span class=\"text-sm\"\n [class.text-green-400]=\"copyFeedback === 'Másolva!'\"\n [class.text-red-400]=\"copyFeedback !== 'Másolva!'\">{{ copyFeedback }}</span>\n }\n <!-- REQ-UI-ERR-001: Send to Quick Input gomb a Copy mellett. -->\n <button type=\"button\"\n class=\"p-2 min-h-[44px] min-w-[44px] flex items-center justify-center rounded\n text-neutral-300 hover:bg-neutral-600 hover:text-white transition-colors\n disabled:opacity-50 disabled:cursor-not-allowed\"\n [disabled]=\"isSendingToQuickInput_$()\"\n (click)=\"sendToQuickInput()\"\n title=\"Küldés Quick Input-ba\"\n aria-label=\"Küldés Quick Input-ba\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" class=\"h-5 w-5\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\"\n d=\"M12 19l9 2-9-18-9 18 9-2zm0 0v-8\" />\n </svg>\n </button>\n @if (quickInputFeedback) {\n <span class=\"text-sm\"\n [class.text-green-400]=\"quickInputFeedback === 'Quick Input létrehozva!'\"\n [class.text-red-400]=\"quickInputFeedback !== 'Quick Input létrehozva!'\">{{ quickInputFeedback }}</span>\n }\n </div>\n </div>\n\n <div class=\"p-4 flex-1 min-h-0 overflow-y-auto space-y-4 overscroll-contain\">\n <div>\n <p class=\"text-sm font-medium text-neutral-400 mb-1\">Üzenet</p>\n <p class=\"text-neutral-100 break-words\">{{ displayMessage_$() }}</p>\n </div>\n\n @if (httpTroubleshootingHint_$(); as tHint) {\n <div class=\"rounded-md border border-amber-600/60 bg-amber-950/40 p-3 space-y-2\">\n <p class=\"text-sm font-medium text-amber-200/95\">{{ tHint.heading }}</p>\n <ul class=\"list-disc list-inside space-y-1.5 text-xs text-amber-100/90\">\n @for (line of tHint.bodyLines; track $index) {\n <li class=\"break-words\">{{ line }}</li>\n }\n </ul>\n <div class=\"pt-1 space-y-1\">\n <p class=\"text-xs font-medium text-neutral-400\">Dokumentáció</p>\n <ul class=\"space-y-1 text-xs\">\n @for (link of tHint.links; track link.href) {\n <li>\n <a [href]=\"link.href\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n class=\"text-ccapAccent hover:underline break-all\">\n {{ link.label }}\n </a>\n </li>\n }\n </ul>\n </div>\n </div>\n }\n\n @if (hasHttpInfo_$()) {\n <div>\n <p class=\"text-sm font-medium text-neutral-400 mb-1\">HTTP</p>\n <p class=\"text-neutral-300 text-sm\">\n {{ httpUrl_$() }} → {{ httpStatus_$() }} {{ httpStatusText_$() }}\n </p>\n </div>\n }\n\n @if (errorClientSource(); as showErrSrc) {\n @if (showErrSrc.trim().length > 0) {\n <div>\n <p class=\"text-sm font-medium text-neutral-400 mb-1\">showError forrás</p>\n <p class=\"text-neutral-300 text-sm break-words\">{{ showErrSrc }}</p>\n </div>\n }\n }\n\n @if (effectiveNg0600Diagnostics_$(); as ngDiag) {\n <div>\n <button type=\"button\"\n (click)=\"toggleNg0600SectionExpanded()\"\n class=\"text-neutral-400 hover:text-neutral-200 text-sm mb-1 text-left w-full flex items-center gap-1\">\n <svg class=\"w-3 h-3 shrink-0 transition-transform duration-150\"\n [class.-rotate-90]=\"!ng0600SectionExpanded_$()\"\n viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\"\n stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <polyline points=\"6 9 12 15 18 9\"></polyline>\n </svg>\n {{ ng0600SectionExpanded_$() ? 'NG0600 diagnózis elrejtése' : 'NG0600 diagnózis (lépések)' }}\n </button>\n @if (ng0600SectionExpanded_$()) {\n <p class=\"text-xs text-neutral-400 mb-2\">{{ ngDiag.summary }}</p>\n <ul class=\"space-y-3 text-xs text-neutral-300\">\n @for (step of ngDiag.toolSteps; track step.id) {\n <li class=\"border border-neutral-600 rounded-md p-2 bg-neutral-900/80\">\n <p class=\"font-medium text-neonCyan/90 mb-1\">{{ step.label }}</p>\n <pre class=\"whitespace-pre-wrap break-words text-neutral-400\">{{ step.detail }}</pre>\n </li>\n }\n </ul>\n }\n </div>\n }\n\n @if (effectiveNg0203Diagnostics_$(); as ng0203Diag) {\n <div>\n <button type=\"button\"\n (click)=\"toggleNg0203SectionExpanded()\"\n class=\"text-neutral-400 hover:text-neutral-200 text-sm mb-1 text-left w-full flex items-center gap-1\">\n <svg class=\"w-3 h-3 shrink-0 transition-transform duration-150\"\n [class.-rotate-90]=\"!ng0203SectionExpanded_$()\"\n viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\"\n stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <polyline points=\"6 9 12 15 18 9\"></polyline>\n </svg>\n {{ ng0203SectionExpanded_$() ? 'NG0203 diagnózis elrejtése' : 'NG0203 diagnózis (lépések)' }}\n </button>\n @if (ng0203SectionExpanded_$()) {\n <p class=\"text-xs text-neutral-400 mb-2\">{{ ng0203Diag.summary }}</p>\n <ul class=\"space-y-3 text-xs text-neutral-300\">\n @for (step of ng0203Diag.toolSteps; track step.id) {\n <li class=\"border border-neutral-600 rounded-md p-2 bg-neutral-900/80\">\n <p class=\"font-medium text-neonCyan/90 mb-1\">{{ step.label }}</p>\n <pre class=\"whitespace-pre-wrap break-words text-neutral-400\">{{ step.detail }}</pre>\n </li>\n }\n </ul>\n }\n </div>\n }\n\n <div>\n <button type=\"button\"\n (click)=\"toggleDetailsExpanded()\"\n class=\"text-neutral-400 hover:text-neutral-200 text-sm mb-1 text-left w-full flex items-center gap-1\">\n <svg class=\"w-3 h-3 shrink-0 transition-transform duration-150\"\n [class.-rotate-90]=\"!detailsExpanded_$()\"\n viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\"\n stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <polyline points=\"6 9 12 15 18 9\"></polyline>\n </svg>\n {{ detailsExpanded_$() ? 'Részletek (JSON) elrejtése' : 'Részletek (JSON)' }}\n </button>\n @if (detailsExpanded_$()) {\n <pre class=\"p-3 bg-neutral-900 rounded text-xs text-neutral-300 overflow-x-auto whitespace-pre-wrap break-words\n max-h-[70vh] overflow-y-auto\">{{ displayDetailsText_$() }}</pre>\n }\n </div>\n\n @if (hasStackSection_$()) {\n <div>\n <button type=\"button\"\n (click)=\"toggleStackExpanded()\"\n class=\"text-neutral-400 hover:text-neutral-200 text-sm mb-1 text-left w-full flex items-center gap-1\">\n <svg class=\"w-3 h-3 shrink-0 transition-transform duration-150\"\n [class.-rotate-90]=\"!stackExpanded_$()\"\n viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\"\n stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <polyline points=\"6 9 12 15 18 9\"></polyline>\n </svg>\n {{ stackExpanded_$() ? 'Stack trace elrejtése' : 'Stack trace megjelenítése' }}\n </button>\n @if (stackExpanded_$()) {\n <pre class=\"p-3 bg-neutral-900 rounded text-xs text-neutral-300 overflow-x-auto whitespace-pre-wrap break-words\n max-h-[70vh] overflow-y-auto\">{{ getDisplayStack() }}</pre>\n }\n </div>\n }\n </div>\n </div>\n}\n", "import { computed, DestroyRef, inject, Injectable, signal } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { DyFM_Error } from '@futdevpro/fsm-dynamo';\n\nimport { UIn_QuickInputAreaCatalog_Util } from '../_collections/utils/quick-input/uin-quick-input-area-catalog.util';\nimport { UIn_QuickInputComposerDraft_Util } from '../_collections/utils/quick-input/uin-quick-input-composer-draft.util';\nimport { UIn_OfflineQueue_Util } from '../_collections/utils/quick-input/uin-quick-input-offline-queue.util';\nimport { UIn_OfflineQueueItem_Interface } from '../_models/interfaces/uin-offline-queue-item.interface';\nimport { UIn_QuickInputOverlayAreaCatalog_Util } from '../_collections/utils/quick-input/uin-quick-input-overlay-area-catalog.util';\nimport { UIn_QuickInputOverlayAreaId_Type } from '../_enums/uin-quick-input-overlay-area-id.enum';\nimport { UIn_FabPosition_Util } from '../_collections/uin-fab-position.util';\nimport { UIn_QuickInputDomPickHoverRect_Interface } from '../_models/interfaces/uin-quick-input-dom-pick-hover-rect.interface';\nimport { CCAP_QuickInputMainBoundsPx_Interface } from '../../../_models/interfaces/user-input/ccap-quick-input-main-bounds-pixels.interface';\nimport { CCAP_UserInputListItem_Interface } from '../../../_models/interfaces/user-input/ccap-user-input-list-item.interface';\nimport { UIn_QuickInputOverlayAreaStackFrame_Interface } from '../_models/interfaces/uin-quick-input-overlay-area-stack-frame.interface';\nimport {\n PM_QuickInput,\n PM_QuickInputBulkArchive_Response,\n PM_QuickInputCreateHttpBody_Request,\n PM_QuickInputPatchHttpBody_Request,\n PM_ListProjects_Response,\n PM_,\n} from '../../../_models/server-index';\nimport {\n PM_QuickInputPredictedType_Type,\n PM_QuickInputStatus_Type,\n PM_QuickInputTaskDifficulty_Type,\n PM_Priority_Type,\n} from '@server-enums';\nimport { ProjectManagement_ApiService } from '../../project-management/_services/project-management.api-service';\nimport { Shr_LocalStoragePersistence_Util } from '../../shared/_collections/utils/storage/shr-local-storage-persistence.util';\n\n/** Composer placeholder szöveg a Quick Input panelhez. */\nexport const UIn_QUICK_INPUT_COMPOSER_PLACEHOLDER: string = 'Írd be a Quick Input jegyzetedet…';\n\n/** Sentinel érték a projekt dropdown „Mind\" szűrőhöz (cross-project nézet). */\nexport const UIn_QUICK_INPUT_ALL_PROJECTS_FILTER: string = '__all__';\n\n/**\n * User Input data service.\n * Quick Input staging entitások: projekt, lista, composer; akció modal állapot.\n */\n@Injectable({ providedIn: 'root' })\nexport class UserInput_DataService {\n\n /** localStorage: area-autofollow per PM projekt (`true` / `false` string). */\n private static readonly AUTOFOLLOW_LS_PREFIX: string = 'ccap-quick-input-area-autofollow:v1:';\n\n /**\n * BUG-QI-PROJECT-DEFAULT-001 re-emphasis #4(2) (cycle 735): localStorage\n * kulcs a list-filter `selectedProjectId` perzisztálásához. A user 2026-05-03\n * re-emphasis-ben explicit kérte: „A projekt beállítás el kéne mentse a\n * böngészőben és visszatöltse, hogyha refresselünk.\" Cycle 450-ben ez a\n * persist eltávolításra került (mert a user akkor azt kérte: friss-load\n * mindig „Mind\"-on induljon); most visszaállítva. A két interpretáció\n * (cycle 450 vs re-emphasis #4) reconciliation a USER-INPUT_3.md (A) variáns:\n * list-filter persist-elhet, a create-form default továbbra sem szivárog\n * (mert a `submitInput` követeli a non-empty projectId-t — `Mind` esetén\n * `submitInputForGlobalError` first-available fallback, panel-szintű nem).\n */\n private static readonly SELECTED_PROJECT_LS_KEY: string = 'ccap-quick-input-selected-project:v1';\n\n private readonly pm_AS: ProjectManagement_ApiService = inject(ProjectManagement_ApiService);\n\n private readonly destroyRef: DestroyRef = inject(DestroyRef);\n\n private readonly router: Router = inject(Router);\n\n /** Elérhető projektek listája. */\n readonly projects_$ = signal<PM_[]>([]);\n\n /**\n * GET /projects válasz map-je: CCAP Revisioned host projektek — Quick Input area UI csak `true` esetén.\n */\n readonly computedCcapRevisionedHostByProjectId_$ = signal<Record<string, boolean>>({});\n\n /** Kiválasztott projekt ID-ja. */\n readonly selectedProjectId_$ = signal<string>('');\n\n /** Cross-project nézet aktív-e (dropdown „Mind\" kiválasztva). */\n readonly isAllProjectsView_$ = computed((): boolean => {\n return this.selectedProjectId_$() === UIn_QUICK_INPUT_ALL_PROJECTS_FILTER;\n });\n\n /**\n * Kiválasztott projekt = CCAP Revisioned host (szerver `PM_CcapRevisionedHost_Util` eredménye, lista-API).\n */\n readonly selectedProjectIsCcapRevisionedHost_$ = computed((): boolean => {\n const projectId: string = this.selectedProjectId_$().trim();\n if (!projectId.length) {\n return false;\n }\n return this.computedCcapRevisionedHostByProjectId_$()[projectId] === true;\n });\n\n /**\n * Új Quick Input staging `area` mezője (preset / custom / autofollow által feloldott route).\n */\n readonly quickInputComposerArea_$ = signal<string>('');\n\n /**\n * Új Quick Input staging `elements` — azonosító string lista (küldésig / draft perzisztencia).\n */\n readonly quickInputComposerElements_$ = signal<string[]>([]);\n\n /**\n * DOM picker aktív — `id`-val rendelkező elem highlight + kattintásra `elements` lista bővítés.\n */\n readonly quickInputDomPickActive_$ = signal<boolean>(false);\n\n /**\n * Hover highlight téglalap viewport koordinátákban; `null` ha nincs találat.\n */\n readonly quickInputDomPickHoverRect_$ = signal<UIn_QuickInputDomPickHoverRect_Interface | null>(null);\n\n /**\n * Hover címke (`#id · tag`).\n */\n readonly quickInputDomPickHoverLabel_$ = signal<string>('');\n\n /**\n * Panel: composer draft mentés kérése (DOM pick append után bump) — `effect` figyeli.\n */\n readonly quickInputComposerDraftPersistBump_$ = signal<number>(0);\n\n /**\n * Ha igaz, a composer area a router URL-ből frissül (`NavigationEnd` + panel/projekt kontextus).\n */\n readonly quickInputAreaAutofollow_$ = signal<boolean>(false);\n\n /**\n * Autofollow overlay kontextus verem (modal nyitás): a teteje felülírja a route-alapú area-t.\n */\n private readonly quickInputOverlayAreaStack_$ = signal<UIn_QuickInputOverlayAreaStackFrame_Interface[]>([]);\n\n /** Quick Input lista a kiválasztott projekthez. */\n readonly inputs_$ = signal<CCAP_UserInputListItem_Interface[]>([]);\n\n /** Akció modal (wizard / szerkesztés / bug) megnyitva. */\n readonly quickInputActionsModalOpen_$ = signal<boolean>(false);\n\n /** Modalban kiválasztott Quick Input _id. */\n readonly selectedQuickInputId_$ = signal<string>('');\n\n /** Panel megnyitva/bezárva. */\n readonly isPanelOpen_$ = signal<boolean>(false);\n\n /** Küldés folyamatban. */\n readonly isSending_$ = signal<boolean>(false);\n\n /** Lista betöltés folyamatban. */\n readonly isLoading_$ = signal<boolean>(false);\n\n /**\n * Quick Input FAB távolsága a main jobb szélétől (px), absolute pozícióhoz.\n */\n readonly fabOffsetRightPx_$ = signal<number>(UIn_FabPosition_Util.fabMarginPx);\n\n /**\n * Quick Input FAB távolsága a main alsó szélétől (px).\n */\n readonly fabOffsetBottomPx_$ = signal<number>(UIn_FabPosition_Util.fabMarginPx);\n\n /**\n * `<main>` belső mérete pixelben — panel anchor számítás (computed nem olvas DOM-ot).\n */\n readonly quickInputMainBoundsPx_$ = signal<CCAP_QuickInputMainBoundsPx_Interface>({\n widthPx: 0,\n heightPx: 0,\n topPx: 0,\n leftPx: 0,\n });\n\n constructor() {\n const stored: { rightPx: number; bottomPx: number } | null =\n UIn_FabPosition_Util.readStoredOffsets();\n if (stored !== null) {\n this.fabOffsetRightPx_$.set(stored.rightPx);\n this.fabOffsetBottomPx_$.set(stored.bottomPx);\n }\n const onResize = (): void => {\n const mainEl: HTMLElement | null = document.querySelector('main');\n if (mainEl !== null) {\n this.clampFabOffsetsToMain(mainEl);\n }\n };\n if (typeof window !== 'undefined') {\n window.addEventListener('resize', onResize);\n this.destroyRef.onDestroy((): void => {\n window.removeEventListener('resize', onResize);\n });\n }\n }\n\n /**\n * FAB offset-ek clamp-elése a main méreteihez (resize / init), snap nélkül.\n */\n clampFabOffsetsToMain(mainEl: HTMLElement): void {\n const rect: DOMRect = mainEl.getBoundingClientRect();\n const clamped: { rightPx: number; bottomPx: number } = UIn_FabPosition_Util.clampOffsets({\n rightPx: this.fabOffsetRightPx_$(),\n bottomPx: this.fabOffsetBottomPx_$(),\n mainWidthPx: rect.width,\n mainHeightPx: rect.height,\n mainTopPx: rect.top,\n mainLeftPx: rect.left,\n });\n this.fabOffsetRightPx_$.set(clamped.rightPx);\n this.fabOffsetBottomPx_$.set(clamped.bottomPx);\n this.syncQuickInputMainBoundsFromRect(rect);\n }\n\n /**\n * Drag közben: új offset-ek beállítása és clamp a viewport-hoz.\n */\n setFabOffsetsClampedToMain(input: { mainEl: HTMLElement; rightPx: number; bottomPx: number }): void {\n const rect: DOMRect = input.mainEl.getBoundingClientRect();\n const clamped: { rightPx: number; bottomPx: number } = UIn_FabPosition_Util.clampOffsets({\n rightPx: input.rightPx,\n bottomPx: input.bottomPx,\n mainWidthPx: rect.width,\n mainHeightPx: rect.height,\n mainTopPx: rect.top,\n mainLeftPx: rect.left,\n });\n this.fabOffsetRightPx_$.set(clamped.rightPx);\n this.fabOffsetBottomPx_$.set(clamped.bottomPx);\n this.syncQuickInputMainBoundsFromRect(rect);\n }\n\n /**\n * Drag vége: edge snap + clamp + localStorage persist.\n */\n finalizeFabDragPosition(mainEl: HTMLElement): void {\n const rect: DOMRect = mainEl.getBoundingClientRect();\n const snapped: { rightPx: number; bottomPx: number } = UIn_FabPosition_Util.snapOffsetsToMainEdges({\n rightPx: this.fabOffsetRightPx_$(),\n bottomPx: this.fabOffsetBottomPx_$(),\n mainWidthPx: rect.width,\n mainHeightPx: rect.height,\n mainTopPx: rect.top,\n mainLeftPx: rect.left,\n });\n this.fabOffsetRightPx_$.set(snapped.rightPx);\n this.fabOffsetBottomPx_$.set(snapped.bottomPx);\n UIn_FabPosition_Util.persistOffsets(snapped.rightPx, snapped.bottomPx);\n this.syncQuickInputMainBoundsFromRect(rect);\n }\n\n /**\n * `<main>` layout anchor frissítése (ResizeObserver a main-frame-ből; app-root Quick Input fixed host).\n */\n syncQuickInputMainBoundsFromMainElement(mainEl: HTMLElement): void {\n const rect: DOMRect = mainEl.getBoundingClientRect();\n this.syncQuickInputMainBoundsFromRect(rect);\n }\n\n /**\n * Main méret és viewport-pozíció signal frissítése panel anchor-hoz és app-shell host-hoz.\n */\n private syncQuickInputMainBoundsFromRect(rect: DOMRect): void {\n this.quickInputMainBoundsPx_$.set({\n widthPx: rect.width,\n heightPx: rect.height,\n topPx: rect.top,\n leftPx: rect.left,\n });\n }\n\n /**\n * Projektek betöltése és alapértelmezett kiválasztás.\n *\n * BUG-QI-PROJECT-DEFAULT-001 re-emphasis #4(2) (cycle 735): a list-filter\n * `selectedProjectId` mostantól újra perzisztált localStorage-ben (cycle 450\n * visszafordítva, user 2026-05-03 explicit kérése: „a projekt beállítás\n * el kéne mentse a böngészőben és visszatöltse, hogyha refresselünk\").\n * Restore-prio: jelenlegi signal (futó session) → localStorage → 'Mind'\n * fallback. A `submitInput` továbbra sem választ silent módon projektet\n * ('Mind'-on `submitInput` `false`-t ad vissza — cycle 432 invariant marad).\n */\n async loadProjects(): Promise<void> {\n try {\n const response: PM_ListProjects_Response = await this.pm_AS.listProjects();\n this.projects_$.set(response.projects ?? []);\n this.computedCcapRevisionedHostByProjectId_$.set(\n response.computedCcapRevisionedHostByProjectId ?? {},\n );\n\n if (!this.selectedProjectId_$()) {\n const stored: string = UserInput_DataService.readSelectedProjectFromStorage();\n // Cycle 736 (cycle 735 follow-up): a stored projectId validálása a friss\n // project-lista ellen — ha a tárolt projekt már nem létezik (törölve),\n // ne ragadjunk meg egy nem-feloldható filteren. Fallback 'Mind', és a\n // stale localStorage entry-t töröljük (ne állítsa vissza többször).\n // 'Mind' (UIn_QUICK_INPUT_ALL_PROJECTS_FILTER) speciális — mindig valid.\n const isStoredValid: boolean =\n !!stored\n && (stored === UIn_QUICK_INPUT_ALL_PROJECTS_FILTER\n || (response.projects ?? []).some(\n (p: PM_): boolean => p._id === stored,\n ));\n if (stored && !isStoredValid) {\n UserInput_DataService.persistSelectedProjectToStorage('');\n }\n this.selectedProjectId_$.set(\n isStoredValid ? stored : UIn_QUICK_INPUT_ALL_PROJECTS_FILTER,\n );\n }\n this.hydrateQuickInputAreaPrefsForSelectedProject();\n await this.loadInputs();\n } catch (error: unknown) {\n DyFM_Error.logSimple('CCAP_UserInput_DS | loadProjects failed', error);\n }\n }\n\n /**\n * Projekt kiválasztása és a hozzá tartozó inputok betöltése.\n *\n * BUG-QI-PROJECT-DEFAULT-001 re-emphasis #4(2) (cycle 735): a választás\n * mostantól perzisztált localStorage-ben — refresh utáni page-load\n * visszaállítja az utolsó user-választást.\n */\n async setProject(projectId: string): Promise<void> {\n this.selectedProjectId_$.set(projectId);\n UserInput_DataService.persistSelectedProjectToStorage(projectId);\n this.hydrateQuickInputAreaPrefsForSelectedProject();\n await this.loadInputs();\n }\n\n /**\n * BUG-QI-PROJECT-DEFAULT-001 re-emphasis #4(2) (cycle 735): localStorage\n * read helper. Visszaadja az utolsó perzisztált projekt-id-t, vagy üres\n * stringet, ha nincs (vagy SSR / hibás storage).\n */\n private static readSelectedProjectFromStorage(): string {\n const value: string | null = Shr_LocalStoragePersistence_Util.readString(\n UserInput_DataService.SELECTED_PROJECT_LS_KEY,\n );\n return value ?? '';\n }\n\n /**\n * BUG-QI-PROJECT-DEFAULT-001 re-emphasis #4(2) (cycle 735): localStorage\n * write helper. Üres stringet `remove`-ol, hogy a következő friss-load a\n * fallback-en induljon.\n */\n private static persistSelectedProjectToStorage(projectId: string): void {\n if (!projectId) {\n Shr_LocalStoragePersistence_Util.remove(\n UserInput_DataService.SELECTED_PROJECT_LS_KEY,\n );\n return;\n }\n Shr_LocalStoragePersistence_Util.writeString(\n UserInput_DataService.SELECTED_PROJECT_LS_KEY,\n projectId,\n );\n }\n\n /**\n * Router `NavigationEnd` / init: autofollow + CCAP host + üres overlay verem esetén area a route katalógusból.\n */\n syncComposerAreaFromNavigation(rawUrl: string): void {\n if (!this.quickInputAreaAutofollow_$()) {\n return;\n }\n if (!this.selectedProjectIsCcapRevisionedHost_$()) {\n return;\n }\n if (this.quickInputOverlayAreaStack_$().length > 0) {\n return;\n }\n this.applyComposerAreaFromRouteForAutofollow(rawUrl);\n }\n\n /**\n * Overlay modal nyitás: verem + `quickInputComposerArea_$` (csak autofollow + CCAP host).\n * Ugyanaz a token a verem tetején: csak `areaValue` frissül (dupla effect ellen).\n */\n pushQuickInputOverlayAreaContext(input: { token: string; areaValue: string }): void {\n if (!this.quickInputAreaAutofollow_$() || !this.selectedProjectIsCcapRevisionedHost_$()) {\n return;\n }\n const tokenTrim: string = input.token.trim();\n const areaTrim: string = input.areaValue.trim();\n if (!tokenTrim.length || !areaTrim.length) {\n return;\n }\n const prev: UIn_QuickInputOverlayAreaStackFrame_Interface[] = [...this.quickInputOverlayAreaStack_$()];\n const top: UIn_QuickInputOverlayAreaStackFrame_Interface | undefined =\n prev.length > 0 ? prev[prev.length - 1] : undefined;\n if (top !== undefined && top.token === tokenTrim) {\n prev[prev.length - 1] = { token: tokenTrim, areaValue: areaTrim };\n this.quickInputOverlayAreaStack_$.set(prev);\n this.quickInputComposerArea_$.set(areaTrim);\n return;\n }\n prev.push({ token: tokenTrim, areaValue: areaTrim });\n this.quickInputOverlayAreaStack_$.set(prev);\n this.quickInputComposerArea_$.set(areaTrim);\n }\n\n /**\n * Overlay bezárás: LIFO — csak akkor pop, ha a teteje egyezik a `token`-nel.\n */\n popQuickInputOverlayAreaContext(token: string): void {\n if (!this.quickInputAreaAutofollow_$() || !this.selectedProjectIsCcapRevisionedHost_$()) {\n return;\n }\n const tokenTrim: string = token.trim();\n if (!tokenTrim.length) {\n return;\n }\n const prev: UIn_QuickInputOverlayAreaStackFrame_Interface[] = [...this.quickInputOverlayAreaStack_$()];\n if (prev.length === 0) {\n return;\n }\n const top: UIn_QuickInputOverlayAreaStackFrame_Interface = prev[prev.length - 1];\n if (top.token !== tokenTrim) {\n return;\n }\n prev.pop();\n this.quickInputOverlayAreaStack_$.set(prev);\n this.reapplyQuickInputComposerAreaAfterOverlayChange();\n }\n\n /**\n * Verem változás után: üres → route area; egyébként verem teteje `areaValue`.\n */\n reapplyQuickInputComposerAreaAfterOverlayChange(): void {\n if (!this.quickInputAreaAutofollow_$() || !this.selectedProjectIsCcapRevisionedHost_$()) {\n return;\n }\n const stack: UIn_QuickInputOverlayAreaStackFrame_Interface[] = this.quickInputOverlayAreaStack_$();\n if (stack.length === 0) {\n this.applyComposerAreaFromRouteForAutofollow(this.router.url ?? '');\n return;\n }\n const topFrame: UIn_QuickInputOverlayAreaStackFrame_Interface = stack[stack.length - 1];\n this.quickInputComposerArea_$.set(topFrame.areaValue);\n }\n\n /**\n * Quick Input actions modal bezárása: nested `pm-manual-bug-modal` frame-ek + a fő modal token —\n * effect sorrend / gyors bezárás miatt nem elég egyetlen `pop(quickInputActionsModal)`.\n */\n closeQuickInputActionsModalOverlayChain(): void {\n if (!this.quickInputAreaAutofollow_$() || !this.selectedProjectIsCcapRevisionedHost_$()) {\n return;\n }\n const bugToken: string = UIn_QuickInputOverlayAreaId_Type.pmManualBugModal;\n const qiToken: string = UIn_QuickInputOverlayAreaId_Type.quickInputActionsModal;\n let stack: UIn_QuickInputOverlayAreaStackFrame_Interface[] = [...this.quickInputOverlayAreaStack_$()];\n while (stack.length > 0) {\n const top: UIn_QuickInputOverlayAreaStackFrame_Interface = stack[stack.length - 1];\n if (top.token === bugToken) {\n stack.pop();\n continue;\n }\n break;\n }\n if (stack.length > 0) {\n const topAfterBugs: UIn_QuickInputOverlayAreaStackFrame_Interface = stack[stack.length - 1];\n if (topAfterBugs.token === qiToken) {\n stack.pop();\n }\n }\n this.quickInputOverlayAreaStack_$.set(stack);\n this.reapplyQuickInputComposerAreaAfterOverlayChange();\n }\n\n /**\n * `overlayId` katalógus alapján push — kényelmi API a komponenseknek.\n */\n pushQuickInputOverlayAreaContextByOverlayId(overlayId: string): void {\n const areaValue: string = UIn_QuickInputOverlayAreaCatalog_Util.resolveAreaValueForOverlayId(overlayId);\n if (!areaValue.length) {\n return;\n }\n this.pushQuickInputOverlayAreaContext({ token: overlayId.trim(), areaValue: areaValue });\n }\n\n /**\n * Route URL → area (autofollow feltételek nélkül — belső; csak akkor hívjuk, ha már ellenőriztük).\n */\n private applyComposerAreaFromRouteForAutofollow(rawUrl: string): void {\n const resolved: string = UIn_QuickInputAreaCatalog_Util.resolveAreaValueForPath({ path: rawUrl });\n this.quickInputComposerArea_$.set(resolved);\n }\n\n /**\n * Nem CCAP host / autofollow ki: overlay verem ürítése.\n */\n private clearQuickInputOverlayAreaStack(): void {\n this.quickInputOverlayAreaStack_$.set([]);\n }\n\n /**\n * Aktuális `Router.url` alapján — panel megnyitás effektusához (autofollow).\n */\n syncComposerAreaFromCurrentNavigation(): void {\n this.syncComposerAreaFromNavigation(this.router.url ?? '');\n }\n\n /**\n * Felhasználói area szerkesztés (autofollow ki): signal + hívó menti a composer draft-ot.\n */\n setQuickInputComposerAreaValueForUser(value: string): void {\n this.quickInputComposerArea_$.set(value);\n }\n\n /**\n * Composer `elements` felülírása (panel draft betöltés / user szerkesztés után).\n * Tartalom-összehasonlítás: azonos lista esetén nem írunk új referenciát (elkerüli a felesleges re-rendereket).\n */\n setQuickInputComposerElementsForUser(elements: unknown): void {\n const next: string[] = UserInput_DataService.normalizeQuickInputElementIds(elements);\n const current: string[] = this.quickInputComposerElements_$();\n // Object.is([], []) === false, ezért tartalom-alapú ellenőrzés szükséges.\n if (next.length === current.length && next.every((v: string, i: number): boolean => v === current[i])) {\n return;\n }\n this.quickInputComposerElements_$.set(next);\n }\n\n /**\n * Egy azonosító hozzáadása a composer listához (duplikátum kihagyva).\n */\n appendQuickInputComposerElement(elementId: string): void {\n const t: string = elementId.trim();\n if (!t.length) {\n return;\n }\n const current: string[] = [...this.quickInputComposerElements_$()];\n if (current.includes(t)) {\n return;\n }\n this.quickInputComposerElements_$.set([...current, t]);\n }\n\n /**\n * Elem eltávolítása index alapján a composer listából.\n */\n removeQuickInputComposerElementAt(index: number): void {\n const current: string[] = [...this.quickInputComposerElements_$()];\n if (index < 0 || index >= current.length) {\n return;\n }\n current.splice(index, 1);\n this.quickInputComposerElements_$.set(current);\n }\n\n /**\n * DOM picker be/ki — csak nyitott panel + CCAP host esetén engedélyezhető `true`.\n */\n setQuickInputDomPickActive(isEnabled: boolean): void {\n if (isEnabled) {\n if (!this.isPanelOpen_$() || !this.selectedProjectIsCcapRevisionedHost_$()) {\n return;\n }\n }\n this.quickInputDomPickActive_$.set(isEnabled);\n if (!isEnabled) {\n this.quickInputDomPickHoverRect_$.set(null);\n this.quickInputDomPickHoverLabel_$.set('');\n }\n }\n\n /**\n * DOM pick után composer draft perzisztencia — panel `effect` reagál a bump-ra.\n */\n requestComposerDraftPersistBump(): void {\n this.quickInputComposerDraftPersistBump_$.update((n: number): number => n + 1);\n }\n\n /**\n * DOM picker overlay: highlight téglalap + címke (kívülről csak így írható).\n */\n setQuickInputDomPickHoverPreview(input: {\n rect: UIn_QuickInputDomPickHoverRect_Interface | null;\n label: string;\n }): void {\n this.quickInputDomPickHoverRect_$.set(input.rect);\n this.quickInputDomPickHoverLabel_$.set(input.label);\n }\n\n /**\n * Panel megnyitás: draft-ból area visszatöltése, ha nem autofollow.\n */\n applyComposerAreaFromDraftWhenManual(areaFromDraft: string): void {\n if (this.quickInputAreaAutofollow_$()) {\n return;\n }\n if (!this.selectedProjectIsCcapRevisionedHost_$()) {\n return;\n }\n this.quickInputComposerArea_$.set(areaFromDraft);\n }\n\n /**\n * Autofollow kapcsoló — per projekt localStorage + azonnali szinkron a jelenlegi URL-lel.\n */\n setQuickInputAreaAutofollow(isEnabled: boolean): void {\n // TEMPORARILY DISABLED: area tracking bug — panel nem nyílik meg ha egyszer be volt kapcsolva.\n // TODO: újraengedélyezni a root cause diagnózis és javítás után.\n if (isEnabled) {\n return;\n }\n const projectId: string = this.selectedProjectId_$().trim();\n if (!projectId.length) {\n return;\n }\n UserInput_DataService.persistAutofollowToStorage(projectId, isEnabled);\n this.quickInputAreaAutofollow_$.set(isEnabled);\n if (!isEnabled) {\n this.clearQuickInputOverlayAreaStack();\n }\n if (isEnabled && this.selectedProjectIsCcapRevisionedHost_$()) {\n this.syncComposerAreaFromNavigation(this.router.url ?? '');\n return;\n }\n if (!isEnabled && this.selectedProjectIsCcapRevisionedHost_$()) {\n const draft: { text: string; area: string; elements: string[] } =\n UIn_QuickInputComposerDraft_Util.loadPayload(projectId);\n this.quickInputComposerArea_$.set(draft.area);\n this.setQuickInputComposerElementsForUser(draft.elements);\n }\n }\n\n /**\n * Kiválasztott projekt és lista-map után: autofollow flag betöltése és szükség esetén area sync.\n */\n private hydrateQuickInputAreaPrefsForSelectedProject(): void {\n const projectId: string = this.selectedProjectId_$().trim();\n if (!projectId.length) {\n this.quickInputAreaAutofollow_$.set(false);\n this.setQuickInputDomPickActive(false);\n return;\n }\n // TEMPORARILY DISABLED: area tracking — localStorage-ból sem töltjük vissza true-t.\n this.quickInputAreaAutofollow_$.set(false);\n if (!this.selectedProjectIsCcapRevisionedHost_$()) {\n this.clearQuickInputOverlayAreaStack();\n this.setQuickInputDomPickActive(false);\n }\n }\n\n /**\n * localStorage olvasás — hibánál default false.\n *\n * REQ-UI-MENU-STATE-001 (cycle 468): a `localStorage.getItem === 'true'` minta\n * a shared `Shr_LocalStoragePersistence_Util.readString === 'true'`-on megy.\n * Default false (`null === 'true'` → false) változatlan; a `typeof localStorage\n * === 'undefined'` SSR-guard a shared util try/catch-jén át érvényesül.\n */\n private static readAutofollowFromStorage(projectId: string): boolean {\n const key: string = `${UserInput_DataService.AUTOFOLLOW_LS_PREFIX}${projectId.trim()}`;\n return Shr_LocalStoragePersistence_Util.readString(key) === 'true';\n }\n\n /**\n * Autofollow perzisztencia projektenként.\n *\n * REQ-UI-MENU-STATE-001 (cycle 468): writeString delegáció. Szándékosan\n * `'true'`/`'false'` literális strings (NEM writeBoolean ami `'1'`/`'0'`-ot\n * írna) — a meglévő on-disk format + read-side `=== 'true'` minta-konzisztencia\n * megőrzéséhez.\n */\n private static persistAutofollowToStorage(projectId: string, isEnabled: boolean): void {\n const key: string = `${UserInput_DataService.AUTOFOLLOW_LS_PREFIX}${projectId.trim()}`;\n Shr_LocalStoragePersistence_Util.writeString(key, isEnabled ? 'true' : 'false');\n }\n\n /**\n * Quick Input `elements` lista normalizálása (trim, üres kihagyás, deduplikáció).\n */\n private static normalizeQuickInputElementIds(raw: unknown): string[] {\n if (!Array.isArray(raw)) {\n return [];\n }\n const seen: Set<string> = new Set<string>();\n const out: string[] = [];\n for (const item of raw) {\n if (typeof item !== 'string') {\n continue;\n }\n const t: string = item.trim();\n if (!t.length || seen.has(t)) {\n continue;\n }\n seen.add(t);\n out.push(t);\n }\n return out;\n }\n\n /**\n * Szerver Quick Input dokumentum mapelése listaelemre.\n * A `projectNameByIdMap` a cross-project nézetben adja a projekt nevet badge-hez.\n */\n private static mapQuickInputToListItem(\n doc: PM_QuickInput,\n projectNameByIdMap: Record<string, string>,\n ): CCAP_UserInputListItem_Interface {\n const parseTaskDifficulty = (value: string): PM_QuickInputTaskDifficulty_Type | undefined => {\n const values: PM_QuickInputTaskDifficulty_Type[] = [\n PM_QuickInputTaskDifficulty_Type.easy,\n PM_QuickInputTaskDifficulty_Type.medium,\n PM_QuickInputTaskDifficulty_Type.hard,\n PM_QuickInputTaskDifficulty_Type.komplex,\n ];\n const found: PM_QuickInputTaskDifficulty_Type | undefined = values.find(\n (v: PM_QuickInputTaskDifficulty_Type): boolean => v === value,\n );\n return found;\n };\n const parsePriority = (value: string): PM_Priority_Type | undefined => {\n const values: PM_Priority_Type[] = [\n PM_Priority_Type.low,\n PM_Priority_Type.medium,\n PM_Priority_Type.high,\n PM_Priority_Type.urgent,\n ];\n const found: PM_Priority_Type | undefined = values.find(\n (v: PM_Priority_Type): boolean => v === value,\n );\n return found;\n };\n const statusRaw: string = String(doc.status ?? PM_QuickInputStatus_Type.draft);\n const status: PM_QuickInputStatus_Type = UserInput_DataService.parseQuickInputStatus(statusRaw);\n const promotedUserRequestIdRaw: string = String(doc.promotedUserRequestId ?? '').trim();\n const promotedBugCodeRaw: string = String(doc.promotedBugCode ?? '').trim();\n const predictedProjectIdRaw: string = String(doc.predictedProjectId ?? '').trim();\n const predictedTypeRaw: string = String(doc.predictedType ?? '').trim();\n const predictedType: PM_QuickInputPredictedType_Type | undefined =\n predictedTypeRaw.length > 0\n ? UserInput_DataService.parseQuickInputPredictedType(predictedTypeRaw)\n : undefined;\n const predictedCleanRaw: string = String(doc.predictedCleanDescription ?? '');\n const taskDifficultyRaw: string = String(doc.taskDifficulty ?? '').trim();\n const taskDifficulty: PM_QuickInputTaskDifficulty_Type | undefined =\n taskDifficultyRaw.length > 0 ? parseTaskDifficulty(taskDifficultyRaw) : undefined;\n const priorityRaw: string = String(doc.priority ?? '').trim();\n const priority: PM_Priority_Type | undefined =\n priorityRaw.length > 0 ? parsePriority(priorityRaw) : undefined;\n const areaRaw: string = String(doc.area ?? '').trim();\n const area: string | undefined = areaRaw.length > 0 ? areaRaw : undefined;\n const elementsNormalized: string[] = UserInput_DataService.normalizeQuickInputElementIds(\n Reflect.get(doc, 'elements'),\n );\n const elements: string[] | undefined =\n elementsNormalized.length > 0 ? elementsNormalized : undefined;\n const docProjectId: string = String(doc.projectId ?? '');\n const titleRaw: string = String(Reflect.get(doc, 'title') ?? '').trim();\n const title: string | undefined = titleRaw.length > 0 ? titleRaw : undefined;\n return {\n quickInputId: String(doc._id ?? ''),\n rawContent: String(doc.rawContent ?? ''),\n title: title,\n status: status,\n createdAt: String(doc.__created ?? ''),\n updatedAt: String(Reflect.get(doc, '__updated') ?? ''),\n projectId: docProjectId,\n projectName: projectNameByIdMap[docProjectId] ?? '',\n promotedUserRequestId:\n promotedUserRequestIdRaw.length > 0 ? promotedUserRequestIdRaw : undefined,\n promotedBugCode: promotedBugCodeRaw.length > 0 ? promotedBugCodeRaw : undefined,\n predictedProjectId:\n predictedProjectIdRaw.length > 0 ? predictedProjectIdRaw : undefined,\n predictedType: predictedType,\n predictedCleanDescription:\n predictedCleanRaw.trim().length > 0 ? predictedCleanRaw : undefined,\n taskDifficulty: taskDifficulty,\n priority: priority,\n area: area,\n elements: elements,\n };\n }\n\n /**\n * Státusz string normalizálása enumra (szerver JSON).\n */\n private static parseQuickInputStatus(value: string): PM_QuickInputStatus_Type {\n const values: PM_QuickInputStatus_Type[] = [\n PM_QuickInputStatus_Type.draft,\n PM_QuickInputStatus_Type.promotedUserInput,\n PM_QuickInputStatus_Type.promotedBug,\n PM_QuickInputStatus_Type.discarded,\n ];\n const found: PM_QuickInputStatus_Type | undefined = values.find(\n (v: PM_QuickInputStatus_Type): boolean => v === value,\n );\n return found ?? PM_QuickInputStatus_Type.draft;\n }\n\n /**\n * Predicted type string normalizálása enumra (szerver JSON).\n */\n private static parseQuickInputPredictedType(value: string): PM_QuickInputPredictedType_Type {\n const values: PM_QuickInputPredictedType_Type[] = [\n PM_QuickInputPredictedType_Type.userInput,\n PM_QuickInputPredictedType_Type.bugReport,\n PM_QuickInputPredictedType_Type.unspecified,\n ];\n const found: PM_QuickInputPredictedType_Type | undefined = values.find(\n (v: PM_QuickInputPredictedType_Type): boolean => v === value,\n );\n return found ?? PM_QuickInputPredictedType_Type.unspecified;\n }\n\n /**\n * Quick Input lista betöltése a kiválasztott projekthez (vagy cross-project „Mind\" nézethez).\n */\n async loadInputs(): Promise<void> {\n const projectId: string = this.selectedProjectId_$();\n if (!projectId) {\n this.inputs_$.set([]);\n return;\n }\n try {\n this.isLoading_$.set(true);\n const isAll: boolean = projectId === UIn_QUICK_INPUT_ALL_PROJECTS_FILTER;\n const response: { quickInputs: PM_QuickInput[] } = isAll\n ? await this.pm_AS.listAllQuickInputs()\n : await this.pm_AS.listQuickInputs(projectId);\n const docs: PM_QuickInput[] = response.quickInputs ?? [];\n const nameMap: Record<string, string> = this.buildProjectNameByIdMap();\n this.inputs_$.set(\n docs.map(\n (doc: PM_QuickInput): CCAP_UserInputListItem_Interface =>\n UserInput_DataService.mapQuickInputToListItem(doc, nameMap),\n ),\n );\n } catch (error: unknown) {\n DyFM_Error.logSimple('CCAP_UserInput_DS | loadInputs failed', error);\n } finally {\n this.isLoading_$.set(false);\n }\n }\n\n /**\n * Projekt _id → név lookup map a `projects_$` signalból (badge megjelenítéshez).\n */\n private buildProjectNameByIdMap(): Record<string, string> {\n const map: Record<string, string> = {};\n for (const project of this.projects_$()) {\n const id: string = String(project._id ?? '');\n if (id.length) {\n map[id] = String(project.name ?? '');\n }\n }\n return map;\n }\n\n /**\n * Új Quick Input létrehozása (csak staging entitás). `true` = siker (composer draft törléshez).\n * BUG-QI-PROJECT-DEFAULT-001 (cycle 432): „Mind\" nézetben NEM választunk silent\n * módon első projektet target-nek — a user-nek explicit ki kell jelölnie egy\n * projektet a panel dropdown-ban. A submit button is disabled ezen állapotban.\n */\n async submitInput(rawContent: string): Promise<boolean> {\n return this.submitInputInternal(rawContent, false);\n }\n\n /**\n * Quick Input létrehozása GLOBÁL ERROR forrásból (BUG-UI-ERR-QI-SEND-001,\n * cycle 707): a `CCAP_ErrorDisplay_Component.sendToQuickInput()` hívja.\n *\n * BUG-QI-PROJECT-DEFAULT-001 (cycle 432) szerint a panel-szintű submit\n * NEM választhat silent módon projektet — a user-nek explicit ki kell\n * jelölnie egyet. DE a globál hibapopup forrás eltérő: a user nem ér\n * rá projektet választani egy spontán hiba-felugró ablakból, és a \"Send\n * to Quick Input\" gomb (REQ-UI-ERR-001) elveszik értelmét, ha a panel\n * \"Mind\" nézetben van.\n *\n * Ez a metódus FALLBACK projektet választ (`projects_$()[0]`) ha a panel-\n * szintű projekt-szelekció nem alkalmas. Az egyik projekt mindig elérhető\n * (PM_QuickInput-ot tárolnia kell valahova). Visszaad `true`-t ha\n * sikerült mentenia, `false`-t ha nincs project elérhető.\n */\n async submitInputForGlobalError(rawContent: string): Promise<boolean> {\n return this.submitInputInternal(rawContent, true);\n }\n\n private async submitInputInternal(\n rawContent: string,\n allowProjectFallback: boolean,\n ): Promise<boolean> {\n let projectId: string = this.selectedProjectId_$();\n if (\n allowProjectFallback\n && (!projectId || projectId === UIn_QUICK_INPUT_ALL_PROJECTS_FILTER)\n ) {\n // BUG-UI-ERR-QI-SEND-001 fallback: globál error pipeline NEM tud panel-\n // szintű project-szelekciót — first-available projektet választunk.\n const firstProject: PM_ | undefined = this.projects_$()[0];\n projectId = firstProject?._id ?? '';\n }\n if (\n !rawContent.trim()\n || !projectId\n || projectId === UIn_QUICK_INPUT_ALL_PROJECTS_FILTER\n ) {\n return false;\n }\n try {\n this.isSending_$.set(true);\n const body: PM_QuickInputCreateHttpBody_Request = {\n rawContent: rawContent,\n };\n if (this.selectedProjectIsCcapRevisionedHost_$()) {\n const areaTrimmed: string = this.quickInputComposerArea_$().trim();\n if (areaTrimmed.length > 0) {\n body.area = areaTrimmed;\n }\n const elementIds: string[] = [...this.quickInputComposerElements_$()];\n if (elementIds.length > 0) {\n body.elements = elementIds;\n }\n }\n const result: { quickInput: PM_QuickInput } = await this.pm_AS.createQuickInput(projectId, body);\n const nameMap: Record<string, string> = this.buildProjectNameByIdMap();\n const item: CCAP_UserInputListItem_Interface =\n UserInput_DataService.mapQuickInputToListItem(result.quickInput, nameMap);\n this.inputs_$.update((list: CCAP_UserInputListItem_Interface[]): CCAP_UserInputListItem_Interface[] => [\n item,\n ...list,\n ]);\n this.quickInputComposerElements_$.set([]);\n // REQ-QI-OFFLINE-001 (cycle 221): minden sikeres submit után fire-and-forget\n // drain a localStorage offline queue-n — ha vannak korábbi failed inputok,\n // most valószínűleg a szerver elérhető, érdemes újra megpróbálni őket.\n void this.drainOfflineQueue();\n return true;\n } catch (error: unknown) {\n DyFM_Error.logSimple('CCAP_UserInput_DS | submitInput failed', error);\n // REQ-QI-OFFLINE-001 (cycle 221): a fail-elt Quick Input mentése a localStorage-ba,\n // hogy a szerver elérhetőségekor automatikusan újra megpróbálhassuk elküldeni.\n // A submit error oka leggyakrabban network down vagy szerver-restart — érdemes a\n // user-szöveget megőrizni. Best-effort: az enqueue maga is csendesen failel ha\n // a localStorage tele / private mode.\n const offlineArea: string | undefined = this.selectedProjectIsCcapRevisionedHost_$()\n ? (this.quickInputComposerArea_$().trim() || undefined)\n : undefined;\n const offlineElementIds: string[] | undefined = this.selectedProjectIsCcapRevisionedHost_$()\n && this.quickInputComposerElements_$().length > 0\n ? [...this.quickInputComposerElements_$()]\n : undefined;\n UIn_OfflineQueue_Util.enqueue({\n projectId: projectId,\n rawContent: rawContent,\n area: offlineArea,\n elementIds: offlineElementIds,\n error: error,\n });\n return false;\n } finally {\n this.isSending_$.set(false);\n }\n }\n\n /**\n * REQ-QI-OFFLINE-001 (cycle 221) — offline queue drain (background retry).\n * Megpróbál minden pending offline Quick Input-ot elküldeni a szervernek.\n * Sikeres elem → eltávolítás a queue-ból + lista frissítés. Sikertelen elem\n * → retry counter inkrementál (5 sikertelen retry után drop).\n *\n * Best-effort: minden hibára csendes return — a normál submit flow soha nem szakad meg.\n */\n async drainOfflineQueue(): Promise<void> {\n let pending: UIn_OfflineQueueItem_Interface[] = UIn_OfflineQueue_Util.loadAll();\n if (pending.length === 0) {\n return;\n }\n const nameMap: Record<string, string> = this.buildProjectNameByIdMap();\n for (const item of pending) {\n try {\n const body: PM_QuickInputCreateHttpBody_Request = {\n rawContent: item.rawContent,\n };\n if (item.area && item.area.trim().length > 0) {\n body.area = item.area;\n }\n if (item.elementIds && item.elementIds.length > 0) {\n body.elements = item.elementIds;\n }\n const result: { quickInput: PM_QuickInput } = await this.pm_AS.createQuickInput(item.projectId, body);\n const newItem: CCAP_UserInputListItem_Interface =\n UserInput_DataService.mapQuickInputToListItem(result.quickInput, nameMap);\n this.inputs_$.update(\n (list: CCAP_UserInputListItem_Interface[]): CCAP_UserInputListItem_Interface[] => [newItem, ...list],\n );\n UIn_OfflineQueue_Util.remove(item.id);\n } catch (err: unknown) {\n // Nem kritikus — increment retry, esetleg drop ha eléri a max-ot.\n UIn_OfflineQueue_Util.incrementRetryAndMaybeDrop(item.id, err);\n }\n }\n }\n\n /**\n * Quick Input LLM osztályozás: predictedType (+ opcionális predicted*) — lista frissítés utána.\n */\n async classifyQuickInputWithLlm(input: {\n pathProjectId: string;\n quickInputId: string;\n }): Promise<boolean> {\n const pathId: string = input.pathProjectId.trim();\n if (!pathId || !input.quickInputId) {\n return false;\n }\n try {\n await this.pm_AS.classifyQuickInputWithLlm(pathId, input.quickInputId);\n await this.loadInputs();\n return true;\n } catch (error: unknown) {\n DyFM_Error.logSimple('CCAP_UserInput_DS | classifyQuickInputWithLlm failed', error);\n return false;\n }\n }\n\n /**\n * Quick Input végleges törlése (DELETE API). Path projekt = rekord `projectId` (szerver `projectId` egyeztetés).\n */\n async deleteQuickInput(input: { pathProjectId: string; quickInputId: string }): Promise<boolean> {\n const pathId: string = input.pathProjectId.trim();\n if (!pathId || !input.quickInputId) {\n return false;\n }\n try {\n await this.pm_AS.deleteQuickInput(pathId, input.quickInputId);\n await this.loadInputs();\n return true;\n } catch (error: unknown) {\n DyFM_Error.logSimple('CCAP_UserInput_DS | deleteQuickInput failed', error);\n return false;\n }\n }\n\n /**\n * Quick Input frissítése (szerkesztés vagy promóció meta) — modal / child komponensek hívják.\n */\n async patchQuickInput(input: {\n /** URL path projekt ID — a dokumentum jelenlegi `projectId`-ja (áthelyezés előtti home). */\n pathProjectId: string;\n quickInputId: string;\n body: PM_QuickInputPatchHttpBody_Request;\n }): Promise<PM_QuickInput | null> {\n const pathId: string = input.pathProjectId.trim();\n if (!pathId || !input.quickInputId) {\n return null;\n }\n try {\n const result: { quickInput: PM_QuickInput } = await this.pm_AS.updateQuickInput(\n pathId,\n input.quickInputId,\n input.body,\n );\n await this.loadInputs();\n return result.quickInput;\n } catch (error: unknown) {\n DyFM_Error.logSimple('CCAP_UserInput_DS | patchQuickInput failed', error);\n return null;\n }\n }\n\n /**\n * Listaelem kiválasztása → akció modal megnyitása.\n */\n openQuickInputActionsModal(quickInputId: string): void {\n this.selectedQuickInputId_$.set(quickInputId);\n this.quickInputActionsModalOpen_$.set(true);\n if (!this.projects_$().length) {\n void this.loadProjects();\n }\n }\n\n /**\n * Akció modal bezárása.\n */\n closeQuickInputActionsModal(): void {\n this.quickInputActionsModalOpen_$.set(false);\n this.selectedQuickInputId_$.set('');\n }\n\n /**\n * Kiválasztott Quick Input listaelem (modal tartalomhoz).\n */\n getSelectedQuickInputListItem(): CCAP_UserInputListItem_Interface | undefined {\n const id: string = this.selectedQuickInputId_$();\n return this.inputs_$().find((i: CCAP_UserInputListItem_Interface): boolean => i.quickInputId === id);\n }\n\n /** „Send All to CC Session\" folyamatban — panel gomb tiltáshoz. */\n readonly sendAllToCcSessionBusy_$ = signal<boolean>(false);\n\n /**\n * Több Quick Input archiválása egyszerre (cross-project), majd lista frissítés.\n */\n async bulkArchiveQuickInputs(quickInputIds: string[]): Promise<PM_QuickInputBulkArchive_Response | null> {\n if (!quickInputIds.length) {\n return null;\n }\n try {\n const result: PM_QuickInputBulkArchive_Response =\n await this.pm_AS.bulkArchiveQuickInputs({ quickInputIds: quickInputIds });\n await this.loadInputs();\n return result;\n } catch (error: unknown) {\n DyFM_Error.logSimple('CCAP_UserInput_DS | bulkArchiveQuickInputs failed', error);\n return null;\n }\n }\n\n /**\n * Quick Input üzenet összeállítása a CC Session-nek — az összes listaelem rawContent-jét sorolja.\n */\n /**\n * Send All prompt összeállítása: utasítás + sorszámozott elemek.\n */\n static buildSendAllMessageContent(items: CCAP_UserInputListItem_Interface[]): string {\n const header: string = [\n 'Az alábbi Quick Input elemeket vedd föl külön-külön elemekként a Quick Input-ba (User Input fájl).',\n '',\n 'Szabályok:',\n '- Az elemeket pontosan tartsd meg, ugyanazzal a szóhasználattal, ugyanabban a formában. Csak typókat javíthatsz.',\n '- Duplikátumok kezelése: ha két elem részben vagy teljesen ugyanazt írja le, vond össze őket egyetlen entry-be.',\n ' Az összevont entry-ben tartsd meg mindkét forrás információit — ne veszítsd el a részleteket.',\n '- User Input fájl méret limit: max 1000 sor fájlonként.',\n ' Ha a meglévő USER-INPUT fájl meghaladná az 1000 sort, nyiss új fájlt a következő sorszámmal',\n ' (pl. USER-INPUT_0.md → USER-INPUT_1.md → USER-INPUT_2.md).',\n '- Meta-utasítások (a User Input lista kezelésére / frissítésére vonatkozó elemek): ha egy elem',\n ' arról szól, HOGYAN kezeljük / frissítsük / rendezzük a User Input-okat (pl. „a régebbieket archiváld\",',\n ' „a duplikátumokat vond össze\", „a XYZ témakörűeket priorizáld\", „töröld a már elvégzetteket\"),',\n ' azt NE új entry-ként vedd fel a listába, hanem **hajtsd is végre** a megfelelő User Input fájl-műveletként,',\n ' és a végrehajtás tényét rögzítsd a végén egy rövid összefoglalóban.',\n ].join('\\n');\n const lines: string[] = items.map(\n (item: CCAP_UserInputListItem_Interface, idx: number): string =>\n `${idx + 1}. ${item.rawContent}`,\n );\n return header + '\\n\\n---\\n\\n' + lines.join('\\n\\n');\n }\n\n /** Panel megnyitás/bezárás toggle. */\n togglePanel(): void {\n const isOpen: boolean = !this.isPanelOpen_$();\n this.isPanelOpen_$.set(isOpen);\n if (isOpen) {\n this.loadProjects();\n }\n }\n\n /** Panel megnyitás. */\n openPanel(): void {\n this.isPanelOpen_$.set(true);\n this.loadProjects();\n }\n\n /** Panel bezárás. */\n closePanel(): void {\n this.setQuickInputDomPickActive(false);\n this.isPanelOpen_$.set(false);\n this.closeQuickInputActionsModal();\n }\n}\n", "/**\n * Quick Input area katalógus: URL illesztés módja (router path → areaValue).\n */\nexport enum UIn_QuickInputAreaCatalogMatchMode_Type {\n prefix = 'prefix',\n exact = 'exact',\n}\n", "import { Set_AreaNavLink_Interface } from '../../../_models/interfaces/shared/set-area-nav-link.interface';\n\n/**\n * Beállítások / setup linkek egy forrásból: shell tab + main frame side nav (path és label szinkron).\n *\n * REQ-UI-MENU-REORG-001 (cycle 439): a tab-sorrend a user kérésére átrendezve —\n * első a Globál, második az Agent, utána a Providers + a többi szekció. A\n * `/settings` route default redirect-je is `global`-ra változott (set.module.ts).\n */\nexport const Set_SETTINGS_AREA_NAV_LINKS: Set_AreaNavLink_Interface[] = [\n {\n routerLink: '/setup',\n label: 'Setup',\n isIncludedInShellTabs: false,\n isRouterLinkActiveExactInShellTabs: false,\n isRouterLinkActiveExactInSideNav: false,\n iconSvgPath: 'M5.636 5.636a9 9 0 1012.728 0M12 3v9',\n },\n {\n routerLink: '/settings/global',\n label: 'Globál beállítások',\n isIncludedInShellTabs: true,\n isRouterLinkActiveExactInShellTabs: true,\n isRouterLinkActiveExactInSideNav: false,\n iconSvgPath: 'M21 12a9 9 0 01-9 9m9-9a9 9 0 00-9-9m9 9H3m9 9a9 9 0 01-9-9m9 9c1.657 0 3-4.03 3-9s-1.343-9-3-9m0 18c-1.657 0-3-4.03-3-9s1.343-9 3-9m-9 9a9 9 0 019-9',\n },\n {\n routerLink: '/settings/agent',\n label: 'Agent beállítások',\n isIncludedInShellTabs: true,\n isRouterLinkActiveExactInShellTabs: true,\n isRouterLinkActiveExactInSideNav: false,\n iconSvgPath: 'M10.5 6h9.75M10.5 6a1.5 1.5 0 11-3 0m3 0a1.5 1.5 0 10-3 0M3.75 6H7.5m3 12h9.75m-9.75 0a1.5 1.5 0 01-3 0m3 0a1.5 1.5 0 00-3 0m-3.75 0H7.5m9-6h3.75m-3.75 0a1.5 1.5 0 01-3 0m3 0a1.5 1.5 0 00-3 0m-9.75 0h9.75',\n },\n {\n routerLink: '/settings/providers',\n label: 'AI provider beállítások',\n isIncludedInShellTabs: true,\n isRouterLinkActiveExactInShellTabs: true,\n isRouterLinkActiveExactInSideNav: true,\n iconSvgPath: 'M11.049 2.927c.3-.921 1.603-.921 1.902 0l1.519 4.674a1 1 0 00.95.69h4.915c.969 0 1.371 1.24.588 1.81l-3.976 2.888a1 1 0 00-.363 1.118l1.518 4.674c.3.922-.755 1.688-1.538 1.118l-3.976-2.888a1 1 0 00-1.176 0l-3.976 2.888c-.783.57-1.838-.197-1.538-1.118l1.518-4.674a1 1 0 00-.363-1.118l-3.976-2.888c-.784-.57-.38-1.81.588-1.81h4.914a1 1 0 00.951-.69l1.519-4.674z',\n },\n {\n routerLink: '/settings/instances',\n label: 'Instance registry',\n isIncludedInShellTabs: true,\n isRouterLinkActiveExactInShellTabs: true,\n isRouterLinkActiveExactInSideNav: false,\n iconSvgPath: 'M5 12h14M5 12a2 2 0 01-2-2V6a2 2 0 012-2h14a2 2 0 012 2v4a2 2 0 01-2 2M5 12a2 2 0 00-2 2v4a2 2 0 002 2h14a2 2 0 002-2v-4a2 2 0 00-2-2m-2-4h.01M17 16h.01',\n },\n {\n routerLink: '/settings/secrets',\n label: 'Titkok (vault)',\n isIncludedInShellTabs: true,\n isRouterLinkActiveExactInShellTabs: true,\n isRouterLinkActiveExactInSideNav: false,\n iconSvgPath: 'M12 15v2m-6 4h12a2 2 0 002-2v-6a2 2 0 00-2-2H6a2 2 0 00-2 2v6a2 2 0 002 2zm10-10V7a4 4 0 00-8 0v4h8z',\n },\n {\n routerLink: '/settings/rag',\n label: 'RAG / tudásbázis',\n isIncludedInShellTabs: true,\n isRouterLinkActiveExactInShellTabs: true,\n isRouterLinkActiveExactInSideNav: false,\n iconSvgPath: 'M4 7v10c0 2.21 3.582 4 8 4s8-1.79 8-4V7M4 7c0 2.21 3.582 4 8 4s8-1.79 8-4M4 7c0-2.21 3.582-4 8-4s8 1.79 8 4m0 5c0 2.21-3.582 4-8 4s-8-1.79-8-4',\n },\n {\n routerLink: '/settings/developer',\n label: 'Developer tools',\n isIncludedInShellTabs: true,\n isRouterLinkActiveExactInShellTabs: true,\n isRouterLinkActiveExactInSideNav: false,\n iconSvgPath: 'M10 20l4-16m4 4l4 4-4 4M6 16l-4-4 4-4',\n },\n {\n routerLink: '/settings/openclaw',\n label: 'OpenClaw',\n isIncludedInShellTabs: true,\n isRouterLinkActiveExactInShellTabs: true,\n isRouterLinkActiveExactInSideNav: false,\n iconSvgPath: 'M13.828 10.172a4 4 0 00-5.656 0l-4 4a4 4 0 105.656 5.656l1.102-1.101m-.758-4.899a4 4 0 005.656 0l4-4a4 4 0 00-5.656-5.656l-1.1 1.1',\n },\n {\n routerLink: '/settings/ca-agent',\n label: 'CA Agent',\n isIncludedInShellTabs: true,\n isRouterLinkActiveExactInShellTabs: true,\n isRouterLinkActiveExactInSideNav: false,\n iconSvgPath: 'M8 9l3 3-3 3m5 0h3M5 20h14a2 2 0 002-2V6a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z',\n },\n {\n routerLink: '/settings/dark-office-layout',\n label: 'Dark Office layout',\n isIncludedInShellTabs: true,\n isRouterLinkActiveExactInShellTabs: true,\n isRouterLinkActiveExactInSideNav: false,\n iconSvgPath: 'M4 5a1 1 0 011-1h14a1 1 0 011 1v2a1 1 0 01-1 1H5a1 1 0 01-1-1V5zM4 13a1 1 0 011-1h6a1 1 0 011 1v6a1 1 0 01-1 1H5a1 1 0 01-1-1v-6zM16 13a1 1 0 011-1h2a1 1 0 011 1v6a1 1 0 01-1 1h-2a1 1 0 01-1-1v-6z',\n },\n {\n // REQ-CCAP-CROSS-001 / BUG-CC-CROSS-MSG-001 (cycle 680): peer-instance\n // sharedSecret config a cross-instance dispatch beállításához.\n routerLink: '/settings/cluster',\n label: 'Cluster (PEI)',\n isIncludedInShellTabs: true,\n isRouterLinkActiveExactInShellTabs: true,\n isRouterLinkActiveExactInSideNav: false,\n iconSvgPath: 'M21 12a9 9 0 11-18 0 9 9 0 0118 0zM9 12h6m-3-3v6',\n },\n];\n", "import { Set_SETTINGS_AREA_NAV_LINKS } from '../../../../config/_modules/settings/_collections/consts/ui-state/set-area-nav-links.const';\nimport { UIn_QuickInputAreaCatalogMatchMode_Type } from '../../../_enums/uin-quick-input-area-catalog-match-mode.enum';\nimport { UIn_QuickInputAreaCatalogEntry_Interface } from '../../../_models/interfaces/uin-quick-input-area-catalog-entry.interface';\n\n/**\n * Settings aloldalak — label és path SSOT: `Set_SETTINGS_AREA_NAV_LINKS`.\n */\nconst CCAP_QUICK_INPUT_AREA_CATALOG_FROM_SETTINGS: UIn_QuickInputAreaCatalogEntry_Interface[] =\n Set_SETTINGS_AREA_NAV_LINKS.map(\n (link): UIn_QuickInputAreaCatalogEntry_Interface => {\n const pathPrefix: string = link.routerLink.trim().length ? link.routerLink.trim() : '/';\n const areaValue: string =\n pathPrefix === '/' ? 'setup' : pathPrefix.replace(/^\\//, '').replace(/\\/+$/, '');\n return {\n pathPrefix: pathPrefix,\n areaValue: areaValue,\n displayLabel: link.label,\n matchMode: UIn_QuickInputAreaCatalogMatchMode_Type.prefix,\n };\n },\n );\n\n/**\n * További fő route-ok (side nav címkéivel összhangban); bővíthető.\n */\nconst CCAP_QUICK_INPUT_AREA_CATALOG_CORE: UIn_QuickInputAreaCatalogEntry_Interface[] = [\n {\n pathPrefix: '/',\n areaValue: 'dashboard',\n displayLabel: 'Dashboard',\n matchMode: UIn_QuickInputAreaCatalogMatchMode_Type.exact,\n },\n {\n pathPrefix: '/dark-office',\n areaValue: 'dark-office',\n displayLabel: 'Dark Office',\n matchMode: UIn_QuickInputAreaCatalogMatchMode_Type.prefix,\n },\n {\n pathPrefix: '/coordinator',\n areaValue: 'coordinator',\n displayLabel: 'Koordinátor',\n matchMode: UIn_QuickInputAreaCatalogMatchMode_Type.prefix,\n },\n {\n pathPrefix: '/project-management',\n areaValue: 'project-management',\n displayLabel: 'Project Management',\n matchMode: UIn_QuickInputAreaCatalogMatchMode_Type.prefix,\n },\n {\n pathPrefix: '/session',\n areaValue: 'session',\n displayLabel: 'CCAP Sessions',\n matchMode: UIn_QuickInputAreaCatalogMatchMode_Type.prefix,\n },\n {\n pathPrefix: '/model-registry',\n areaValue: 'model-registry',\n displayLabel: 'Model registry',\n matchMode: UIn_QuickInputAreaCatalogMatchMode_Type.prefix,\n },\n {\n pathPrefix: '/embedding-registry',\n areaValue: 'embedding-registry',\n displayLabel: 'Embedding registry',\n matchMode: UIn_QuickInputAreaCatalogMatchMode_Type.prefix,\n },\n {\n pathPrefix: '/embedding-eval',\n areaValue: 'embedding-eval',\n displayLabel: 'Embedding eval',\n matchMode: UIn_QuickInputAreaCatalogMatchMode_Type.prefix,\n },\n {\n pathPrefix: '/errors',\n areaValue: 'errors',\n displayLabel: 'Hibák',\n matchMode: UIn_QuickInputAreaCatalogMatchMode_Type.prefix,\n },\n {\n pathPrefix: '/feedback',\n areaValue: 'feedback',\n displayLabel: 'Feedback',\n matchMode: UIn_QuickInputAreaCatalogMatchMode_Type.prefix,\n },\n {\n pathPrefix: '/logs',\n areaValue: 'logs',\n displayLabel: 'Logs',\n matchMode: UIn_QuickInputAreaCatalogMatchMode_Type.prefix,\n },\n {\n pathPrefix: '/host-runtime-mcp',\n areaValue: 'host-runtime-mcp',\n displayLabel: 'Host runtime MCP',\n matchMode: UIn_QuickInputAreaCatalogMatchMode_Type.prefix,\n },\n {\n pathPrefix: '/voice-notes-poc',\n areaValue: 'voice-notes-poc',\n displayLabel: 'Voice Notes POC',\n matchMode: UIn_QuickInputAreaCatalogMatchMode_Type.prefix,\n },\n {\n pathPrefix: '/master-control-remote-poc',\n areaValue: 'master-control-remote-poc',\n displayLabel: 'POC Remote',\n matchMode: UIn_QuickInputAreaCatalogMatchMode_Type.prefix,\n },\n {\n pathPrefix: '/workflow-settings',\n areaValue: 'workflow-settings',\n displayLabel: 'Workflow settings',\n matchMode: UIn_QuickInputAreaCatalogMatchMode_Type.prefix,\n },\n {\n pathPrefix: '/cc-session',\n areaValue: 'cc-session',\n displayLabel: 'CC Sessions',\n matchMode: UIn_QuickInputAreaCatalogMatchMode_Type.prefix,\n },\n {\n pathPrefix: '/oc-session',\n areaValue: 'oc-session',\n displayLabel: 'OC Sessions',\n matchMode: UIn_QuickInputAreaCatalogMatchMode_Type.prefix,\n },\n {\n pathPrefix: '/ca-session',\n areaValue: 'ca-session',\n displayLabel: 'CA Sessions',\n matchMode: UIn_QuickInputAreaCatalogMatchMode_Type.prefix,\n },\n {\n pathPrefix: '/consultant',\n areaValue: 'consultant',\n displayLabel: 'Consultant',\n matchMode: UIn_QuickInputAreaCatalogMatchMode_Type.prefix,\n },\n {\n pathPrefix: '/agent-instances',\n areaValue: 'agent-instances',\n displayLabel: 'Agent instances',\n matchMode: UIn_QuickInputAreaCatalogMatchMode_Type.prefix,\n },\n {\n pathPrefix: '/terminals',\n areaValue: 'terminals',\n displayLabel: 'Terminals',\n matchMode: UIn_QuickInputAreaCatalogMatchMode_Type.prefix,\n },\n {\n pathPrefix: '/live-development-pipeline',\n areaValue: 'live-development-pipeline',\n displayLabel: 'Live dev pipeline',\n matchMode: UIn_QuickInputAreaCatalogMatchMode_Type.prefix,\n },\n {\n pathPrefix: '/mobile-app',\n areaValue: 'mobile-app',\n displayLabel: 'Mobile app',\n matchMode: UIn_QuickInputAreaCatalogMatchMode_Type.prefix,\n },\n];\n\n/**\n * Quick Input area katalógus: settings (SSOT nav) + core route-ok; leghosszabb prefix nyer a feloldásnál.\n */\nexport const UIn_QUICK_INPUT_AREA_CATALOG: UIn_QuickInputAreaCatalogEntry_Interface[] = [\n ...CCAP_QUICK_INPUT_AREA_CATALOG_FROM_SETTINGS,\n ...CCAP_QUICK_INPUT_AREA_CATALOG_CORE,\n];\n", "import { UIn_QuickInputAreaCatalogMatchMode_Type } from '../../../_enums/uin-quick-input-area-catalog-match-mode.enum';\nimport { UIn_QuickInputAreaCatalogEntry_Interface } from '../../../_models/interfaces/uin-quick-input-area-catalog-entry.interface';\nimport { UIn_QUICK_INPUT_AREA_CATALOG } from '../../consts/quick-input/uin-quick-input-area-catalog.const';\n\n/**\n * Router URL → Quick Input areaValue feloldás és normalizálás.\n */\nexport class UIn_QuickInputAreaCatalog_Util {\n\n /**\n * Teljes router URL-ből path normalizálása (query és fragment nélkül, trailing `/` levágva).\n */\n static normalizeRouterUrlPath(rawUrl: string): string {\n const withoutQuery: string = rawUrl.split('?')[0].split('#')[0].trim();\n let path: string = withoutQuery;\n if (!path.length) {\n return '/';\n }\n if (!path.startsWith('/')) {\n path = `/${path}`;\n }\n if (path.length > 1 && path.endsWith('/')) {\n path = path.slice(0, -1);\n }\n return path;\n }\n\n /**\n * Leghosszabb illeszkedő katalógus-bejegyzés `areaValue`-ja; üres string, ha nincs találat.\n */\n static resolveAreaValueForPath(\n input: { path: string; catalog?: UIn_QuickInputAreaCatalogEntry_Interface[] },\n ): string {\n const catalog: UIn_QuickInputAreaCatalogEntry_Interface[] =\n input.catalog ?? UIn_QUICK_INPUT_AREA_CATALOG;\n const normalizedPath: string = UIn_QuickInputAreaCatalog_Util.normalizeRouterUrlPath(input.path);\n const sorted: UIn_QuickInputAreaCatalogEntry_Interface[] = [...catalog].sort(\n (a: UIn_QuickInputAreaCatalogEntry_Interface, b: UIn_QuickInputAreaCatalogEntry_Interface): number =>\n b.pathPrefix.length - a.pathPrefix.length,\n );\n for (const entry of sorted) {\n const mode: UIn_QuickInputAreaCatalogMatchMode_Type =\n entry.matchMode ?? UIn_QuickInputAreaCatalogMatchMode_Type.prefix;\n if (mode === UIn_QuickInputAreaCatalogMatchMode_Type.exact) {\n if (normalizedPath === entry.pathPrefix) {\n return entry.areaValue;\n }\n continue;\n }\n if (normalizedPath === entry.pathPrefix) {\n return entry.areaValue;\n }\n const slashPrefix: string = `${entry.pathPrefix}/`;\n if (normalizedPath.startsWith(slashPrefix)) {\n return entry.areaValue;\n }\n }\n return '';\n }\n\n /**\n * Katalógus másolata megjelenítéshez: stabil `areaValue` szerint deduplikálva, label ABC (locale).\n */\n static catalogOptionsForDisplay(\n catalog?: UIn_QuickInputAreaCatalogEntry_Interface[],\n ): UIn_QuickInputAreaCatalogEntry_Interface[] {\n const source: UIn_QuickInputAreaCatalogEntry_Interface[] = catalog ?? UIn_QUICK_INPUT_AREA_CATALOG;\n const byArea: Map<string, UIn_QuickInputAreaCatalogEntry_Interface> = new Map();\n for (const entry of source) {\n if (!byArea.has(entry.areaValue)) {\n byArea.set(entry.areaValue, entry);\n }\n }\n return [...byArea.values()].sort(\n (a: UIn_QuickInputAreaCatalogEntry_Interface, b: UIn_QuickInputAreaCatalogEntry_Interface): number =>\n a.displayLabel.localeCompare(b.displayLabel, 'hu'),\n );\n }\n\n /**\n * `areaValue` alapján első találat `displayLabel`-je; egyéni string esetén az érték marad megjelenítésként.\n */\n static getDisplayLabelForAreaValue(\n input: { areaValue: string; catalog?: UIn_QuickInputAreaCatalogEntry_Interface[] },\n ): string {\n const trimmed: string = input.areaValue.trim();\n if (!trimmed.length) {\n return '';\n }\n const catalog: UIn_QuickInputAreaCatalogEntry_Interface[] =\n input.catalog ?? UIn_QUICK_INPUT_AREA_CATALOG;\n const hit: UIn_QuickInputAreaCatalogEntry_Interface | undefined = catalog.find(\n (e: UIn_QuickInputAreaCatalogEntry_Interface): boolean => e.areaValue === trimmed,\n );\n return hit !== undefined ? hit.displayLabel : trimmed;\n }\n}\n", "import { Shr_LocalStoragePersistence_Util } from '../../../../shared/_collections/utils/storage/shr-local-storage-persistence.util';\n\nconst STORAGE_PREFIX: string = 'ccap-quick-input-composer-draft:';\n\n/** Üres projekt választás — külön slot, hogy a reload előtti szöveg se vesszen el. */\nconst NO_PROJECT_SEGMENT: string = '__no_project__';\n\n/**\n * Quick Input panel composer (új jegyzet) localStorage perzisztencia — projektenkénti draft.\n * A nyers szöveg változatlanul kerül tárolásra (USER-INPUT immutability a küldés pillanatáig a user szerkeszti).\n * Opcionális `area` csak ha area-autofollow ki van kapcsolva (manuális preset / custom).\n * Opcionális `elements` — CCAP host projektnél azonosító lista (mindkét area módban).\n *\n * REQ-UI-MENU-STATE-001 (cycle 453): a `loadPayload` / `save` / `clear` most a\n * shared `Shr_LocalStoragePersistence_Util.readJson<unknown> / writeJson / remove`\n * metódusokra delegál; az `isPayloadShape` és `parseElementsField` shape-validátor\n * változatlan. LocalStorage kulcsformátum (`STORAGE_PREFIX + projectId | __no_project__`)\n * változatlan — backward-compat. A `typeof localStorage === 'undefined'` SSR-guard\n * szerepét a shared util try/catch-je veszi át.\n */\nexport class UIn_QuickInputComposerDraft_Util {\n\n /**\n * Betöltött draft: szöveg + opcionális area + opcionális elements (régi payload: üres / hiányzó mezők).\n */\n static loadPayload(projectId: string): { text: string; area: string; elements: string[] } {\n const key: string = UIn_QuickInputComposerDraft_Util.storageKey(projectId);\n const parsed: unknown = Shr_LocalStoragePersistence_Util.readJson<unknown>(key, null);\n if (!UIn_QuickInputComposerDraft_Util.isPayloadShape(parsed)) {\n return { text: '', area: '', elements: [] };\n }\n const areaRaw: unknown = Reflect.get(parsed, 'area');\n const area: string = typeof areaRaw === 'string' ? areaRaw : '';\n const elementsRaw: unknown = Reflect.get(parsed, 'elements');\n const elements: string[] = UIn_QuickInputComposerDraft_Util.parseElementsField(elementsRaw);\n return { text: parsed.text, area: area, elements: elements };\n }\n\n /**\n * Storage kulcs: `projectId` vagy nincs projekt esetén közös no-project slot.\n */\n static storageKey(projectId: string): string {\n const trimmed: string = projectId.trim();\n const segment: string = trimmed.length > 0 ? trimmed : NO_PROJECT_SEGMENT;\n return `${STORAGE_PREFIX}${segment}`;\n }\n\n /**\n * Mentett composer szöveg betöltése — parse hiba / hiány esetén üres string.\n */\n static load(projectId: string): string {\n return UIn_QuickInputComposerDraft_Util.loadPayload(projectId).text;\n }\n\n /**\n * Aktuális composer tartalom mentése (voice + kézi írás egyaránt); `area` / `elements` opcionális blokk.\n */\n static save(\n projectId: string,\n text: string,\n input?: { area?: string; elements?: string[] },\n ): void {\n const key: string = UIn_QuickInputComposerDraft_Util.storageKey(projectId);\n const payload: {\n text: string;\n updatedAt: string;\n area?: string;\n elements?: string[];\n } = {\n text: text,\n updatedAt: new Date().toISOString(),\n };\n // Harmadik param nélkül nem írunk extra kulcsokat — régi értékek törlődnek.\n if (input !== undefined) {\n if (input.area !== undefined) {\n payload.area = input.area;\n }\n if (input.elements !== undefined) {\n payload.elements = input.elements;\n }\n }\n Shr_LocalStoragePersistence_Util.writeJson(key, payload);\n }\n\n /**\n * Sikeres staging küldés után — slot ürítése.\n */\n static clear(projectId: string): void {\n const key: string = UIn_QuickInputComposerDraft_Util.storageKey(projectId);\n Shr_LocalStoragePersistence_Util.remove(key);\n }\n\n /**\n * JSON `elements` mező — csak string tömb, egyébként üres lista.\n */\n private static parseElementsField(value: unknown): string[] {\n if (!Array.isArray(value)) {\n return [];\n }\n const out: string[] = [];\n for (const item of value) {\n if (typeof item !== 'string') {\n continue;\n }\n const t: string = item.trim();\n if (t.length) {\n out.push(t);\n }\n }\n return out;\n }\n\n private static isPayloadShape(\n value: unknown,\n ): value is { text: string; updatedAt: string; area?: string; elements?: unknown } {\n if (typeof value !== 'object' || value === null || Array.isArray(value)) {\n return false;\n }\n const areaVal: unknown = Reflect.get(value, 'area');\n const areaOk: boolean = areaVal === undefined || typeof areaVal === 'string';\n const elementsVal: unknown = Reflect.get(value, 'elements');\n const elementsOk: boolean = elementsVal === undefined || Array.isArray(elementsVal);\n return typeof Reflect.get(value, 'text') === 'string'\n && typeof Reflect.get(value, 'updatedAt') === 'string'\n && areaOk\n && elementsOk;\n }\n}\n", "import { Shr_LocalStoragePersistence_Util } from '../../../../shared/_collections/utils/storage/shr-local-storage-persistence.util';\nimport { UIn_OfflineQueueItem_Interface } from '../../../_models/interfaces/uin-offline-queue-item.interface';\n\nconst STORAGE_KEY: string = 'ccap-userInput:offlineQueue';\nconst MAX_QUEUE_SIZE: number = 100;\nconst MAX_RETRY_COUNT: number = 5;\n\n/**\n * REQ-QI-OFFLINE-001 (cycle 221) — Quick Input offline submit queue.\n *\n * A user kérése: \"ha a szerver unavailable, miközben megpróbálunk egy Quick\n * Input-ot elküldeni, akkor azt a böngészőbe mentsük el, és legközelebb, ha\n * a szerver újra elérhető, akkor küldjük el a szervernek (teljesen\n * automatikusan a háttérben).\"\n *\n * A `submitInput` data-service metódus catch ágában a fail-elt új Quick Input\n * mentődik a localStorage-ba (időbélyeggel + retry-counterrel). A panel\n * mount-jakor és minden sikeres submit után megpróbáljuk a queue-t kiüríteni\n * (drain) — fire-and-forget módon, a normál submit flow-t nem blokkolva.\n *\n * Storage kulcs: `ccap-userInput:offlineQueue` — egyetlen JSON tömb.\n * Maximum kapacitás: 100 elem (FIFO eviction); max 5 retry / item (akkor drop).\n *\n * REQ-UI-MENU-STATE-001 (cycle 454): a localStorage I/O most a shared\n * `Shr_LocalStoragePersistence_Util.readJson<unknown> / writeJson / remove`\n * metódusokra delegál; a `isValidItem` shape-validátor és a FIFO eviction\n * + retry-counter logika változatlan. Best-effort viselkedés (localStorage\n * tele / private mode / SecurityException → csendes return) most a shared\n * util try/catch-jén keresztül érvényesül.\n */\nexport class UIn_OfflineQueue_Util {\n\n /** Új failed Quick Input mentése a queue végére (FIFO). */\n static enqueue(params: {\n projectId: string;\n rawContent: string;\n area?: string;\n elementIds?: string[];\n error: unknown;\n }): UIn_OfflineQueueItem_Interface | null {\n if (!params.projectId || !params.rawContent.trim()) {\n return null;\n }\n const item: UIn_OfflineQueueItem_Interface = {\n id: UIn_OfflineQueue_Util.generateId(),\n projectId: params.projectId,\n rawContent: params.rawContent,\n area: params.area,\n elementIds: params.elementIds,\n savedAt: new Date().toISOString(),\n retryCount: 0,\n lastError: UIn_OfflineQueue_Util.errorToString(params.error),\n };\n const queue: UIn_OfflineQueueItem_Interface[] = UIn_OfflineQueue_Util.loadAll();\n queue.push(item);\n // FIFO eviction: ha túl sok, töröljük az elejéről.\n const trimmed: UIn_OfflineQueueItem_Interface[] = queue.length > MAX_QUEUE_SIZE\n ? queue.slice(queue.length - MAX_QUEUE_SIZE)\n : queue;\n Shr_LocalStoragePersistence_Util.writeJson(STORAGE_KEY, trimmed);\n return item;\n }\n\n /**\n * Az összes pending offline Quick Input lekérése (drain-hez).\n * Üres / hiányos / JSON-érvénytelen storage esetén üres tömb.\n */\n static loadAll(): UIn_OfflineQueueItem_Interface[] {\n const parsed: unknown = Shr_LocalStoragePersistence_Util.readJson<unknown>(STORAGE_KEY, null);\n if (!Array.isArray(parsed)) {\n return [];\n }\n return parsed.filter(\n (i: unknown): i is UIn_OfflineQueueItem_Interface =>\n UIn_OfflineQueue_Util.isValidItem(i),\n );\n }\n\n /** Egy elem eltávolítása ID alapján (sikeres retry után). */\n static remove(id: string): void {\n if (!id) {\n return;\n }\n const queue: UIn_OfflineQueueItem_Interface[] = UIn_OfflineQueue_Util.loadAll();\n const filtered: UIn_OfflineQueueItem_Interface[] = queue.filter(\n (i: UIn_OfflineQueueItem_Interface): boolean => i.id !== id,\n );\n if (filtered.length === 0) {\n Shr_LocalStoragePersistence_Util.remove(STORAGE_KEY);\n } else {\n Shr_LocalStoragePersistence_Util.writeJson(STORAGE_KEY, filtered);\n }\n }\n\n /**\n * Retry counter inkrementálása (sikertelen retry után).\n * Ha eléri a `MAX_RETRY_COUNT`-ot, automatikusan eltávolítja a queue-ból\n * (drop — a user manuálisan újraküldheti, ha akarja).\n * Visszatérési érték: true, ha még a queue-ban marad; false, ha drop-pelve.\n */\n static incrementRetryAndMaybeDrop(id: string, error: unknown): boolean {\n if (!id) {\n return false;\n }\n const queue: UIn_OfflineQueueItem_Interface[] = UIn_OfflineQueue_Util.loadAll();\n const idx: number = queue.findIndex(\n (i: UIn_OfflineQueueItem_Interface): boolean => i.id === id,\n );\n if (idx < 0) {\n return false;\n }\n const item: UIn_OfflineQueueItem_Interface = queue[idx];\n const newRetryCount: number = item.retryCount + 1;\n if (newRetryCount >= MAX_RETRY_COUNT) {\n // Drop — eltávolítás\n UIn_OfflineQueue_Util.remove(id);\n return false;\n }\n queue[idx] = {\n ...item,\n retryCount: newRetryCount,\n lastError: UIn_OfflineQueue_Util.errorToString(error),\n };\n Shr_LocalStoragePersistence_Util.writeJson(STORAGE_KEY, queue);\n return true;\n }\n\n /** Teljes queue kiürítése (csak debug / reset célból). */\n static clearAll(): void {\n Shr_LocalStoragePersistence_Util.remove(STORAGE_KEY);\n }\n\n /** Egyedi ID generálás (timestamp + random). */\n private static generateId(): string {\n const ts: number = Date.now();\n const rnd: string = Math.random().toString(36).slice(2, 10);\n return `qi-offline-${ts}-${rnd}`;\n }\n\n /** Type-guard: érvényes a parsed item? */\n private static isValidItem(value: unknown): boolean {\n if (!value || typeof value !== 'object') {\n return false;\n }\n const obj: Record<string, unknown> = value as Record<string, unknown>;\n return typeof obj.id === 'string'\n && typeof obj.projectId === 'string'\n && typeof obj.rawContent === 'string'\n && typeof obj.savedAt === 'string'\n && typeof obj.retryCount === 'number';\n }\n\n /** Hiba string-osítás (best-effort). */\n private static errorToString(err: unknown): string {\n if (err instanceof Error) {\n return err.message;\n }\n if (typeof err === 'string') {\n return err;\n }\n try {\n return JSON.stringify(err);\n } catch {\n return 'unknown error';\n }\n }\n}\n", "/**\n * Quick Input overlay area kontextus token — verem `token` mezője és katalógus kulcs.\n */\nexport enum UIn_QuickInputOverlayAreaId_Type {\n globalErrorDetailModal = 'global-error-detail-modal',\n quickInputActionsModal = 'quick-input-actions-modal',\n pmManualBugModal = 'pm-manual-bug-modal',\n}\n", "import { UIn_QuickInputOverlayAreaId_Type } from '../../../_enums/uin-quick-input-overlay-area-id.enum';\nimport { UIn_QuickInputOverlayAreaCatalogEntry_Interface } from '../../../_models/interfaces/uin-quick-input-overlay-area-catalog-entry.interface';\n\n/**\n * Popup / modal azonosító → area érték (autofollow overlay verem).\n */\nexport const UIn_QUICK_INPUT_OVERLAY_AREA_CATALOG: UIn_QuickInputOverlayAreaCatalogEntry_Interface[] = [\n {\n overlayId: UIn_QuickInputOverlayAreaId_Type.globalErrorDetailModal,\n areaValue: 'ui/global-error-detail-modal',\n displayLabel: 'Globális hiba részletek (modal)',\n },\n {\n overlayId: UIn_QuickInputOverlayAreaId_Type.quickInputActionsModal,\n areaValue: 'ui/quick-input-actions-modal',\n displayLabel: 'Quick Input akciók (modal)',\n },\n {\n overlayId: UIn_QuickInputOverlayAreaId_Type.pmManualBugModal,\n areaValue: 'ui/pm-manual-bug-modal',\n displayLabel: 'Kézi bug felvétel (modal)',\n },\n];\n", "import { UIn_QUICK_INPUT_OVERLAY_AREA_CATALOG } from '../../consts/quick-input/uin-quick-input-overlay-area-catalog.const';\nimport { UIn_QuickInputOverlayAreaCatalogEntry_Interface } from '../../../_models/interfaces/uin-quick-input-overlay-area-catalog-entry.interface';\n\n/**\n * Overlay katalógus lookup — `overlayId` → `areaValue` / teljes bejegyzés.\n */\nexport class UIn_QuickInputOverlayAreaCatalog_Util {\n\n /**\n * Első találat `areaValue`-ja; üres string, ha nincs ilyen `overlayId`.\n */\n static resolveAreaValueForOverlayId(overlayId: string): string {\n const entry: UIn_QuickInputOverlayAreaCatalogEntry_Interface | undefined =\n UIn_QuickInputOverlayAreaCatalog_Util.getEntryByOverlayId(overlayId);\n return entry !== undefined ? entry.areaValue : '';\n }\n\n /**\n * Katalógus bejegyzés keresése.\n */\n static getEntryByOverlayId(\n overlayId: string,\n ): UIn_QuickInputOverlayAreaCatalogEntry_Interface | undefined {\n const trimmed: string = overlayId.trim();\n if (!trimmed.length) {\n return undefined;\n }\n return UIn_QUICK_INPUT_OVERLAY_AREA_CATALOG.find(\n (e: UIn_QuickInputOverlayAreaCatalogEntry_Interface): boolean => e.overlayId === trimmed,\n );\n }\n}\n", "import { Shr_LocalStoragePersistence_Util } from '../../shared/_collections/utils/storage/shr-local-storage-persistence.util';\n\n/**\n * Quick Input FAB pozíció: tárolás, clamp, edge snap.\n * A FAB a `<main>` elem koordináta-rendszerében pozícionált (right/bottom offset-ek),\n * de a mozgási tartomány kiterjed a teljes viewport-ra (sidebar + header fölé is húzható).\n * Statikus util — nincs DI / service connection.\n *\n * REQ-UI-MENU-STATE-001 (cycle 452): a `readStoredOffsets` / `persistOffsets` most a shared\n * `Shr_LocalStoragePersistence_Util.readJson<unknown> / writeJson` metódusokra\n * delegál; a `rightPx` / `bottomPx` + `Number.isNaN` shape-validator változatlan.\n * LocalStorage kulcs (`ccap-userInputFabOffset`) változatlan — backward-compat.\n */\nexport class UIn_FabPosition_Util {\n\n /** FAB négyzet oldalhossza (w-12 / h-12). */\n static readonly fabSizePx: number = 48;\n\n /** Alapértelmezett távolság a szélektől (viewport + main szélekhez közel húzható). */\n static readonly fabMarginPx: number = 8;\n\n /** Üres rész a FAB teteje és a panel alja között (korábbi bottom-20 vizuális egyezés). */\n static readonly fabPanelGapPx: number = 8;\n\n /** Edge snap: ha ennyi px-en belül van a szél, ráhúzzuk a margin-ra. */\n static readonly edgeSnapThresholdPx: number = 16;\n\n private static readonly storageKey: string = 'ccap-userInputFabOffset';\n\n /**\n * Mentett right/bottom offset kiolvasása localStorage-ból.\n * Hiány vagy parse hiba esetén null.\n */\n static readStoredOffsets(): { rightPx: number; bottomPx: number } | null {\n const parsed: unknown = Shr_LocalStoragePersistence_Util.readJson<unknown>(\n UIn_FabPosition_Util.storageKey,\n null,\n );\n if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed)) {\n return null;\n }\n const rightRaw: unknown = Reflect.get(parsed, 'rightPx');\n const bottomRaw: unknown = Reflect.get(parsed, 'bottomPx');\n if (rightRaw === undefined || bottomRaw === undefined) {\n return null;\n }\n const rightPx: number = Number(rightRaw);\n const bottomPx: number = Number(bottomRaw);\n if (Number.isNaN(rightPx) || Number.isNaN(bottomPx)) {\n return null;\n }\n return { rightPx: rightPx, bottomPx: bottomPx };\n }\n\n /**\n * FAB offset mentése localStorage-ba.\n */\n static persistOffsets(rightPx: number, bottomPx: number): void {\n Shr_LocalStoragePersistence_Util.writeJson(\n UIn_FabPosition_Util.storageKey,\n { rightPx: rightPx, bottomPx: bottomPx },\n );\n }\n\n /**\n * Offset-ek clamp-elése.\n * A koordináta-rendszer a `<main>` elemhez kötött (right/bottom offset a main-hez képest),\n * de a mozgástér kiterjed a teljes viewport-ra: `mainTopPx` extra felfelé (header fölé),\n * `mainLeftPx` extra balra (sidebar fölé).\n */\n static clampOffsets(input: {\n rightPx: number;\n bottomPx: number;\n mainWidthPx: number;\n mainHeightPx: number;\n /** `<main>` viewport-top — ennyi extra tér van felfelé (header magasság). */\n mainTopPx: number;\n /** `<main>` viewport-left — ennyi extra tér van balra (sidebar szélesség). */\n mainLeftPx: number;\n }): { rightPx: number; bottomPx: number } {\n const m: number = UIn_FabPosition_Util.fabMarginPx;\n const s: number = UIn_FabPosition_Util.fabSizePx;\n // Jobb szél: margin a main jobb szélétől (= viewport jobb szélétől).\n // Bal szél: main szélességén túl + sidebar (mainLeftPx) — margin a viewport bal szélétől.\n const maxRight: number = Math.max(m, input.mainWidthPx - s - m + input.mainLeftPx);\n // Alsó szél: margin a main aljától (= viewport aljától).\n // Felső szél: main magasságán túl + header (mainTopPx) — margin a viewport tetejétől.\n const maxBottom: number = Math.max(m, input.mainHeightPx - s - m + input.mainTopPx);\n const rightPx: number = Math.min(maxRight, Math.max(m, input.rightPx));\n const bottomPx: number = Math.min(maxBottom, Math.max(m, input.bottomPx));\n return { rightPx: rightPx, bottomPx: bottomPx };\n }\n\n /**\n * Közeli main széléhez igazítás (snap), majd ismételt clamp.\n * A snap csak a main szélein belül aktív — az overflow régiókban (sidebar/header fölött) nem húzza vissza.\n */\n static snapOffsetsToMainEdges(input: {\n rightPx: number;\n bottomPx: number;\n mainWidthPx: number;\n mainHeightPx: number;\n mainTopPx: number;\n mainLeftPx: number;\n }): { rightPx: number; bottomPx: number } {\n const s: number = UIn_FabPosition_Util.fabSizePx;\n const snap: number = UIn_FabPosition_Util.edgeSnapThresholdPx;\n const margin: number = UIn_FabPosition_Util.fabMarginPx;\n let rightPx: number = input.rightPx;\n let bottomPx: number = input.bottomPx;\n // Jobb szél: a FAB jobb oldala ≤ snap px-re a main jobb szélétől.\n if (rightPx <= snap) {\n rightPx = margin;\n }\n // Bal szél: csak main-en belül snap-el (leftGap >= 0); sidebar overflow régióban nem húzza vissza.\n const leftGapPx: number = input.mainWidthPx - rightPx - s;\n if (leftGapPx >= 0 && leftGapPx <= snap) {\n rightPx = input.mainWidthPx - s - margin;\n }\n // Alsó szél.\n if (bottomPx <= snap) {\n bottomPx = margin;\n }\n // Felső szél: csak main-en belül snap-el (topGap >= 0); header overflow régióban nem húzza vissza.\n const topGapPx: number = input.mainHeightPx - bottomPx - s;\n if (topGapPx >= 0 && topGapPx <= snap) {\n bottomPx = input.mainHeightPx - s - margin;\n }\n return UIn_FabPosition_Util.clampOffsets({\n rightPx: rightPx,\n bottomPx: bottomPx,\n mainWidthPx: input.mainWidthPx,\n mainHeightPx: input.mainHeightPx,\n mainTopPx: input.mainTopPx,\n mainLeftPx: input.mainLeftPx,\n });\n }\n}\n", "import { inject, Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\n\nimport { firstValueFrom } from 'rxjs';\n\nimport { environment } from '../../../../environments/environment';\nimport { PM_AllFileContents_Response } from '../../../_models/server-index';\nimport {\n PM_AppendBugsFromErrors_Request,\n PM_AppendBugsFromErrors_Response,\n PM_AppendSingleBugFromError_Response,\n PM_BugsPathResolution_Response,\n PM_ControlFileUserRequestSyncResult_Response,\n PM_CreateUserRequestHttpBody_Request,\n PM_ManualBugCreate_Request,\n PM_ManualBugCreate_Response,\n} from '../../../_models/server-index';\nimport { PM_ControlFileContent_Response } from '../../../_models/server-index';\nimport { PM_DiscoveredProject_Response } from '../../../_models/server-index';\nimport { PM_GetProject_Response, PM_ListProjects_Response } from '../../../_models/server-index';\nimport { PM_GitInfo_Response } from '../../../_models/server-index';\nimport { PM_ } from '../../../_models/server-index';\nimport { PM_SyncResult_Response } from '../../../_models/server-index';\nimport { PM_UserRequest } from '../../../_models/server-index';\nimport { PM_QuickInput } from '../../../_models/server-index';\nimport {\n PM_QuickInputBulkArchive_Request,\n PM_QuickInputBulkArchive_Response,\n PM_QuickInputCreateHttpBody_Request,\n PM_QuickInputLlmClassify_Response,\n PM_QuickInputPatchHttpBody_Request,\n} from '../../../_models/server-index';\nimport { PM_Response } from '../../../_models/server-index';\nimport { PM_UserRequest_Response } from '../../../_models/server-index';\nimport {\n PM_ControlEntryMutation_Request,\n PM_ControlEntryMutation_Response,\n PM_UserInputFinalize_Request,\n PM_UserInputFinalize_Response,\n PM_UserInputSuggestFormat_Request,\n PM_UserInputSuggestFormat_Response,\n} from '../../../_models/server-index';\nimport { PM_ControlFileType_Type } from '../../../_models/server-index';\nimport { DT_DeveloperReviewMeta_Response } from '../../../_models/server-index';\nimport { DT_DeveloperRun_Response } from '../../../_models/server-index';\nimport { PM_Group_DataModel } from '../../../_models/server-index';\nimport { PM_GroupFiles_Response } from '../../../_models/server-index';\nimport {\n PM_AgentReportContent_Response,\n PM_AgentReports_ListResponse,\n} from '../../../_models/server-index';\n\n/**\n * Project Management API service.\n * CRUD: projektek és user request-ek.\n */\n@Injectable({ providedIn: 'root' })\nexport class ProjectManagement_ApiService {\n\n private readonly baseUrl: string = `${environment.api.baseUrl}/project-management`;\n\n private readonly http: HttpClient = inject(HttpClient);\n\n /** Összes aktív projekt listázása. */\n listProjects(): Promise<PM_ListProjects_Response> {\n return firstValueFrom(\n this.http.get<PM_ListProjects_Response>(`${this.baseUrl}/projects`),\n );\n }\n\n /** Új projekt létrehozása. */\n createProject(payload: PM_Response): Promise<{ project: PM_ }> {\n return firstValueFrom(\n this.http.post<{ project: PM_ }>(`${this.baseUrl}/projects`, payload),\n );\n }\n\n /** Projekt lekérése ID alapján. */\n getProject(projectId: string): Promise<PM_GetProject_Response> {\n return firstValueFrom(\n this.http.get<PM_GetProject_Response>(`${this.baseUrl}/projects/${projectId}`),\n );\n }\n\n /** Projekt részleges frissítése. */\n updateProject(\n projectId: string,\n payload: Partial<PM_Response>,\n ): Promise<PM_GetProject_Response> {\n return firstValueFrom(\n this.http.patch<PM_GetProject_Response>(`${this.baseUrl}/projects/${projectId}`, payload),\n );\n }\n\n /** Projekt archiválása. */\n archiveProject(projectId: string): Promise<{ success: boolean }> {\n return firstValueFrom(\n this.http.delete<{ success: boolean }>(`${this.baseUrl}/projects/${projectId}`),\n );\n }\n\n // ---------------------------------------------------------------------------\n // Project Groups\n // ---------------------------------------------------------------------------\n\n /** Összes aktív projekt csoport listázása. */\n listGroups(): Promise<{ groups: PM_Group_DataModel[] }> {\n return firstValueFrom(\n this.http.get<{ groups: PM_Group_DataModel[] }>(`${this.baseUrl}/groups`),\n );\n }\n\n /** Új projekt csoport létrehozása. */\n createGroup(payload: { name: string; scanPath: string; description?: string }): Promise<{ group: PM_Group_DataModel }> {\n return firstValueFrom(\n this.http.post<{ group: PM_Group_DataModel }>(`${this.baseUrl}/groups`, payload),\n );\n }\n\n /** Projekt csoport archiválása. */\n archiveGroup(groupId: string): Promise<void> {\n return firstValueFrom(\n this.http.delete<void>(`${this.baseUrl}/groups/${groupId}`),\n );\n }\n\n /** Group extra fájlok listázása (live scan a szerveren). */\n getGroupFiles(groupId: string): Promise<PM_GroupFiles_Response> {\n return firstValueFrom(\n this.http.get<PM_GroupFiles_Response>(`${this.baseUrl}/groups/${groupId}/files`),\n );\n }\n\n // ---------------------------------------------------------------------------\n // Cross-Instance\n // ---------------------------------------------------------------------------\n\n /** Összes instanc összes projektjének listázása (cross-instance nézet). */\n listAllProjectsAcrossInstances(): Promise<{ projects: PM_[]; currentCcapId: string | null }> {\n return firstValueFrom(\n this.http.get<{ projects: PM_[]; currentCcapId: string | null }>(\n `${this.baseUrl}/cross-instance/projects`,\n ),\n );\n }\n\n /** Projekt klónozása a saját instancra. */\n cloneProject(payload: {\n sourceProjectId: string;\n targetParentDir: string;\n repoName?: string;\n }): Promise<{ project: PM_; clonedPath: string }> {\n return firstValueFrom(\n this.http.post<{ project: PM_; clonedPath: string }>(\n `${this.baseUrl}/cross-instance/clone-project`,\n payload,\n ),\n );\n }\n\n /** Group klónozása a saját instancra. */\n cloneGroup(payload: {\n sourceGroupId: string;\n targetParentDir: string;\n }): Promise<{\n group: PM_Group_DataModel;\n clonedProjects: { sourceId: string; newProjectId: string; clonedPath: string }[];\n cloneErrors: { sourceId: string; name: string; error: string }[];\n }> {\n return firstValueFrom(\n this.http.post<{\n group: PM_Group_DataModel;\n clonedProjects: { sourceId: string; newProjectId: string; clonedPath: string }[];\n cloneErrors: { sourceId: string; name: string; error: string }[];\n }>(`${this.baseUrl}/cross-instance/clone-group`, payload),\n );\n }\n\n /** Workspace scan: projektek felfedezése a megadott útvonal alatt. */\n discoverProjects(scanPath: string): Promise<{ discoveredProjects: PM_DiscoveredProject_Response[] }> {\n return firstValueFrom(\n this.http.post<{ discoveredProjects: PM_DiscoveredProject_Response[] }>(\n `${this.baseUrl}/discover`,\n { scanPath: scanPath },\n ),\n );\n }\n\n /** Git állapot gyors frissítése (csak git, nem teljes sync). */\n refreshGitStatus(projectId: string): Promise<{ project: PM_; gitInfo: PM_GitInfo_Response }> {\n return firstValueFrom(\n this.http.post<{ project: PM_; gitInfo: PM_GitInfo_Response }>(\n `${this.baseUrl}/projects/${projectId}/git-status`,\n {},\n ),\n );\n }\n\n /** Lightweight sync egy projektre. */\n syncProject(projectId: string): Promise<{\n project: PM_;\n syncResult: PM_SyncResult_Response;\n controlFileUserRequestSync: PM_ControlFileUserRequestSyncResult_Response;\n }> {\n return firstValueFrom(\n this.http.post<{\n project: PM_;\n syncResult: PM_SyncResult_Response;\n controlFileUserRequestSync: PM_ControlFileUserRequestSyncResult_Response;\n }>(`${this.baseUrl}/projects/${projectId}/sync`, {}),\n );\n }\n\n /** Lightweight sync minden aktív projektre. */\n syncAllProjects(): Promise<{\n totalProjects: number;\n syncedCount: number;\n skippedCount: number;\n errors: string[];\n results: {\n projectId: string;\n projectName: string;\n syncResult: PM_SyncResult_Response;\n controlFileUserRequestSync: PM_ControlFileUserRequestSyncResult_Response;\n }[];\n }> {\n return firstValueFrom(\n this.http.post<{\n totalProjects: number;\n syncedCount: number;\n skippedCount: number;\n errors: string[];\n results: {\n projectId: string;\n projectName: string;\n syncResult: PM_SyncResult_Response;\n controlFileUserRequestSync: PM_ControlFileUserRequestSyncResult_Response;\n }[];\n }>(`${this.baseUrl}/sync-all`, {}),\n );\n }\n\n /** Egy kontroll fájl parse-olt tartalmának lekérése. */\n getFileContent(\n projectId: string,\n fileType: PM_ControlFileType_Type,\n ): Promise<{ fileContent: PM_ControlFileContent_Response<unknown> }> {\n return firstValueFrom(\n this.http.get<{ fileContent: PM_ControlFileContent_Response<unknown> }>(\n `${this.baseUrl}/projects/${projectId}/files/${fileType}`,\n ),\n );\n }\n\n /** Minden kontroll fájl összesített parse eredménye. */\n getAllFileContents(\n projectId: string,\n ): Promise<{ files: PM_AllFileContents_Response }> {\n return firstValueFrom(\n this.http.get<{ files: PM_AllFileContents_Response }>(\n `${this.baseUrl}/projects/${projectId}/files`,\n ),\n );\n }\n\n /** BUGS.md jelöltek, ambiguitás, preferencia (GET …/files/bugs/resolve). */\n getBugsPathResolve(projectId: string): Promise<PM_BugsPathResolution_Response> {\n return firstValueFrom(\n this.http.get<PM_BugsPathResolution_Response>(\n `${this.baseUrl}/projects/${projectId}/files/bugs/resolve`,\n ),\n );\n }\n\n /**\n * Kontroll fájl egy entry blokkjának cseréje vagy törlése (`todo` | `backlog` | `bugs` | `userInput`).\n */\n mutateControlFileEntry(\n projectId: string,\n fileType: PM_ControlFileType_Type,\n body: PM_ControlEntryMutation_Request,\n ): Promise<PM_ControlEntryMutation_Response> {\n return firstValueFrom(\n this.http.post<PM_ControlEntryMutation_Response>(\n `${this.baseUrl}/projects/${projectId}/files/${fileType}/entry-mutation`,\n body,\n ),\n );\n }\n\n /** TEST-ERROR-REPORTS.json ürítése (JSON tömb []). */\n clearTestErrorReports(\n projectId: string,\n ): Promise<{ success: boolean; clearedPath?: string }> {\n return firstValueFrom(\n this.http.post<{ success: boolean; clearedPath?: string }>(\n `${this.baseUrl}/projects/${projectId}/test-error-reports/clear`,\n {},\n ),\n );\n }\n\n /** Központi error tábla → BUGS.md append (csak CCAP Revisioned host projekt). */\n appendBugsFromErrors(\n projectId: string,\n body?: PM_AppendBugsFromErrors_Request,\n ): Promise<PM_AppendBugsFromErrors_Response> {\n return firstValueFrom(\n this.http.post<PM_AppendBugsFromErrors_Response>(\n `${this.baseUrl}/projects/${projectId}/bugs/from-errors`,\n body ?? {},\n ),\n );\n }\n\n /**\n * Egy központi error rekord → egy BUGS.md blokk (ccapErrorId = központi tábla `_id`).\n */\n appendSingleBugFromError(\n projectId: string,\n ccapErrorId: string,\n body?: PM_AppendBugsFromErrors_Request,\n ): Promise<PM_AppendSingleBugFromError_Response> {\n const enc: string = encodeURIComponent(ccapErrorId.trim());\n return firstValueFrom(\n this.http.post<PM_AppendSingleBugFromError_Response>(\n `${this.baseUrl}/projects/${projectId}/bugs/from-errors/${enc}`,\n body ?? {},\n ),\n );\n }\n\n /** Kézi bug: BUGS.md append + pm_user_request (bug). */\n createManualBug(\n projectId: string,\n body: PM_ManualBugCreate_Request,\n ): Promise<PM_ManualBugCreate_Response> {\n return firstValueFrom(\n this.http.post<PM_ManualBugCreate_Response>(\n `${this.baseUrl}/projects/${projectId}/bugs/manual`,\n body,\n ),\n );\n }\n\n /** Projekt user request-einek listázása. */\n listUserRequests(projectId: string): Promise<{ userRequests: PM_UserRequest[] }> {\n return firstValueFrom(\n this.http.get<{ userRequests: PM_UserRequest[] }>(\n `${this.baseUrl}/projects/${projectId}/user-requests`,\n ),\n );\n }\n\n /** Új user request létrehozása. */\n createUserRequest(\n projectId: string,\n payload: PM_CreateUserRequestHttpBody_Request,\n ): Promise<{ userRequest: PM_UserRequest }> {\n return firstValueFrom(\n this.http.post<{ userRequest: PM_UserRequest }>(\n `${this.baseUrl}/projects/${projectId}/user-requests`,\n payload,\n ),\n );\n }\n\n /** User request frissítése. */\n updateUserRequest(\n projectId: string,\n requestId: string,\n payload: Partial<PM_UserRequest_Response>,\n ): Promise<{ userRequest: PM_UserRequest }> {\n return firstValueFrom(\n this.http.patch<{ userRequest: PM_UserRequest }>(\n `${this.baseUrl}/projects/${projectId}/user-requests/${requestId}`,\n payload,\n ),\n );\n }\n\n /** Quick Input staging lista projekthez. */\n listQuickInputs(projectId: string): Promise<{ quickInputs: PM_QuickInput[] }> {\n return firstValueFrom(\n this.http.get<{ quickInputs: PM_QuickInput[] }>(\n `${this.baseUrl}/projects/${projectId}/quick-inputs`,\n ),\n );\n }\n\n /** Összes Quick Input listázása cross-project nézethez. */\n listAllQuickInputs(): Promise<{ quickInputs: PM_QuickInput[] }> {\n return firstValueFrom(\n this.http.get<{ quickInputs: PM_QuickInput[] }>(\n `${this.baseUrl}/quick-inputs`,\n ),\n );\n }\n\n /** Új Quick Input (csak DB, nincs USER-INPUT.md). */\n createQuickInput(\n projectId: string,\n body: PM_QuickInputCreateHttpBody_Request,\n ): Promise<{ quickInput: PM_QuickInput }> {\n return firstValueFrom(\n this.http.post<{ quickInput: PM_QuickInput }>(\n `${this.baseUrl}/projects/${projectId}/quick-inputs`,\n body,\n ),\n );\n }\n\n /** Quick Input patch (szerkesztés / promóció meta). */\n updateQuickInput(\n projectId: string,\n quickInputId: string,\n body: PM_QuickInputPatchHttpBody_Request,\n ): Promise<{ quickInput: PM_QuickInput }> {\n return firstValueFrom(\n this.http.patch<{ quickInput: PM_QuickInput }>(\n `${this.baseUrl}/projects/${projectId}/quick-inputs/${quickInputId}`,\n body,\n ),\n );\n }\n\n /** Quick Input törlése. */\n deleteQuickInput(projectId: string, quickInputId: string): Promise<void> {\n return firstValueFrom(\n this.http.delete<void>(`${this.baseUrl}/projects/${projectId}/quick-inputs/${quickInputId}`),\n );\n }\n\n /**\n * Quick Input: default LLM-mel user-input vs bug-report vs unspecified (+ opcionális predicted projekt / összefoglaló).\n */\n classifyQuickInputWithLlm(\n projectId: string,\n quickInputId: string,\n ): Promise<PM_QuickInputLlmClassify_Response> {\n return firstValueFrom(\n this.http.post<PM_QuickInputLlmClassify_Response>(\n `${this.baseUrl}/projects/${projectId}/quick-inputs/${quickInputId}/classify-with-llm`,\n {},\n ),\n );\n }\n\n /** Több Quick Input archiválása egyszerre (cross-project). */\n bulkArchiveQuickInputs(\n body: PM_QuickInputBulkArchive_Request,\n ): Promise<PM_QuickInputBulkArchive_Response> {\n return firstValueFrom(\n this.http.post<PM_QuickInputBulkArchive_Response>(\n `${this.baseUrl}/quick-inputs/bulk-archive`,\n body,\n ),\n );\n }\n\n /** USER-INPUT wizard: LLM meta javaslat. */\n suggestUserInputFormat(\n projectId: string,\n body: PM_UserInputSuggestFormat_Request,\n ): Promise<PM_UserInputSuggestFormat_Response> {\n return firstValueFrom(\n this.http.post<PM_UserInputSuggestFormat_Response>(\n `${this.baseUrl}/projects/${projectId}/user-inputs/suggest-format`,\n body,\n ),\n );\n }\n\n /** USER-INPUT wizard: fájl + DB véglegesítés. */\n finalizeUserInput(\n projectId: string,\n body: PM_UserInputFinalize_Request,\n ): Promise<PM_UserInputFinalize_Response> {\n return firstValueFrom(\n this.http.post<PM_UserInputFinalize_Response>(\n `${this.baseUrl}/projects/${projectId}/user-inputs/finalize`,\n body,\n ),\n );\n }\n\n // ─── Reviews ───────────────────────────────────────────────────────────────\n\n /** Elérhető developer review-k metaadatainak lekérése a projekthez. */\n getReviewsMeta(\n projectId: string,\n ): Promise<{ reviewsMeta: DT_DeveloperReviewMeta_Response[] }> {\n return firstValueFrom(\n this.http.get<{ reviewsMeta: DT_DeveloperReviewMeta_Response[] }>(\n `${this.baseUrl}/projects/${projectId}/reviews/meta`,\n ),\n );\n }\n\n /** Developer review-ok futtatása a projekt localPath-ján. */\n runProjectReviews(\n projectId: string,\n reviewIds?: string[],\n ): Promise<{ reviewResult: DT_DeveloperRun_Response }> {\n return firstValueFrom(\n this.http.post<{ reviewResult: DT_DeveloperRun_Response }>(\n `${this.baseUrl}/projects/${projectId}/reviews/run`,\n { reviewIds: reviewIds },\n ),\n );\n }\n\n /** Agent riportok listája (REQ-PM-AGT-001 Slice 4). */\n listAgentReports(projectId: string): Promise<PM_AgentReports_ListResponse> {\n return firstValueFrom(\n this.http.get<PM_AgentReports_ListResponse>(\n `${this.baseUrl}/projects/${projectId}/agent-reports`,\n ),\n );\n }\n\n /**\n * Egy konkrét agent-riport tartalma relPath alapján (REQ-PM-AGT-001 Slice 4).\n * Path-traversal védelem a szerveren: csak `__agent/reports/` alatti relPath\n * fogadható, minden más 400 PM-AGT-INVALID-REL-PATH.\n */\n getAgentReportContent(\n projectId: string,\n relPath: string,\n ): Promise<PM_AgentReportContent_Response> {\n const params = { relPath: relPath };\n return firstValueFrom(\n this.http.get<PM_AgentReportContent_Response>(\n `${this.baseUrl}/projects/${projectId}/agent-reports/content`,\n { params: params },\n ),\n );\n }\n}\n"],
5
- "mappings": "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",
6
- "names": ["import_fsm_dynamo", "CCAP_JsonParsePhase_Type", "JSON_PARSE_DIAGNOSTIC_MAX_CHARS", "JSON_PARSE_SNIPPET_RADIUS", "JSON_PARSE_SNIPPET_FALLBACK_PREFIX", "CCAP_JsonParse_Util", "extractJsonFromContent", "content", "codeBlockMatch", "match", "trim", "firstBrace", "indexOf", "lastBrace", "lastIndexOf", "slice", "rawContentLooksLikeExtractableJsonObject", "trimmed", "extracted", "extractedTrimmedLooksLikeJsonObjectRoot", "prepareLlmJsonTextForStrictParse", "relaxTrailingCommasInJsonLikeText", "orphanMerged", "repairExecutionSummaryForUserOrphanSiblingStrings", "afterInner", "repairUnescapedInnerDoubleQuotesInJsonLikeText", "sanitized", "sanitizeRawControlCharsInsideJsonStrings", "trimStart", "startsWith", "getLlmPipelinePreparedText", "tryParseStrict", "params", "text", "ok", "value", "JSON", "parse", "error", "failure", "buildFailureFromParseError", "sourceText", "contextLabel", "phase", "CCAP_JsonParsePhase_Type", "strictParse", "parseStrictOrThrow", "result", "err", "Error", "summaryMessage", "causeUnknown", "originalError", "cause", "rawMessage", "tryParseLlmPipeline", "prepared", "inner", "base", "llmSummary", "llmParse", "position", "line", "column", "inputLength", "length", "snippetAroundError", "extractedLength", "preparedLength", "parseLlmPipelineOrThrow", "failureToPlainAdditionalContext", "out", "jsonParsePhase", "jsonParseContextLabel", "jsonParseRawMessage", "jsonParseSummaryMessage", "undefined", "jsonParsePosition", "jsonParseLine", "jsonParseColumn", "jsonParseInputLength", "jsonParseExtractedLength", "jsonParsePreparedLength", "jsonParseSnippetAroundError", "orig", "jsonParseOriginalErrorMessage", "message", "String", "formatFailureForLog", "diagnosticSourceText", "options", "snippetBlock", "start", "Math", "max", "end", "min", "rel", "pointer", "repeat", "prefix", "fullBlock", "half", "floor", "head", "tail", "lenParts", "push", "lenLine", "join", "summaryLine", "includeSummaryLine", "includeFullSourceText", "trimEnd", "logFailureWarn", "lines", "DyFM_Log", "warn", "jsonText", "stack", "inString", "stringRole", "escapeNext", "i", "c", "j", "isJsonWhitespaceChar", "next", "nextIsValueDelimiter", "missingCommaThenQuotedKey", "jsonQuoteRepairMissingCommaBeforeQuotedPropertyKey", "jsonQuoteRepairApplyCommaToInnermostObject", "kind", "pop", "jsonQuoteRepairApplyColonToInnermostObject", "jsonQuoteRepairResolveStringRoleForOpenQuote", "jsonQuoteRepairWhitespaceRunHasLineFeed", "endExclusive", "p", "ch", "jsonQuoteRepairStringAtLooksLikeKeyThenColon", "openQuoteIdx", "closingQuoteIdx", "k", "wsStart", "s", "f", "keyNeedle", "keyIdx", "firstStringOpenIdx", "firstRead", "readJsonDoubleQuotedStringDecodedAt", "mergedParts", "decoded", "pos", "cursorAfterClosingQuote", "skipJsonWhitespace", "replaceEndExclusive", "orphanRead", "afterOrphan", "mergedJsonString", "stringify", "before", "after", "idx", "esc", "hex", "test", "codePoint", "Number", "parseInt", "fromCharCode", "current", "maxPasses", "pass", "relaxTrailingCommasInJsonLikeTextOnce", "nextSignificant", "code", "charCodeAt", "toString", "padStart", "readJsonParseErrorPosition", "lineCol", "oneBasedLineColumnFromOffset", "buildSnippetAroundPosition", "offset", "lineStart", "offsetFromOneBasedLineColumn", "split", "li", "colIndex", "lineText", "fromField", "Reflect", "get", "isFinite", "msg", "m1", "n", "isNaN", "m2", "m3", "lineNum", "colNum", "fromLc", "import_fsm_dynamo", "import_fsm_dynamo", "UIn_QuickInputAreaCatalogMatchMode_Type", "Set_SETTINGS_AREA_NAV_LINKS", "routerLink", "label", "isIncludedInShellTabs", "isRouterLinkActiveExactInShellTabs", "isRouterLinkActiveExactInSideNav", "iconSvgPath", "CCAP_QUICK_INPUT_AREA_CATALOG_FROM_SETTINGS", "Set_SETTINGS_AREA_NAV_LINKS", "map", "link", "pathPrefix", "routerLink", "trim", "length", "areaValue", "replace", "displayLabel", "label", "matchMode", "UIn_QuickInputAreaCatalogMatchMode_Type", "prefix", "CCAP_QUICK_INPUT_AREA_CATALOG_CORE", "exact", "UIn_QUICK_INPUT_AREA_CATALOG", "UIn_QuickInputAreaCatalog_Util", "normalizeRouterUrlPath", "rawUrl", "path", "split", "trim", "length", "startsWith", "endsWith", "slice", "resolveAreaValueForPath", "input", "catalog", "UIn_QUICK_INPUT_AREA_CATALOG", "normalizedPath", "sorted", "sort", "a", "b", "pathPrefix", "entry", "matchMode", "UIn_QuickInputAreaCatalogMatchMode_Type", "prefix", "exact", "areaValue", "slashPrefix", "catalogOptionsForDisplay", "source", "byArea", "Map", "has", "set", "values", "displayLabel", "localeCompare", "getDisplayLabelForAreaValue", "trimmed", "hit", "find", "e", "undefined", "STORAGE_PREFIX", "NO_PROJECT_SEGMENT", "UIn_QuickInputComposerDraft_Util", "loadPayload", "projectId", "key", "storageKey", "parsed", "Shr_LocalStoragePersistence_Util", "readJson", "isPayloadShape", "text", "area", "elements", "areaRaw", "Reflect", "get", "elementsRaw", "parseElementsField", "trimmed", "trim", "segment", "length", "load", "save", "input", "payload", "updatedAt", "Date", "toISOString", "undefined", "writeJson", "clear", "remove", "value", "Array", "isArray", "out", "item", "t", "push", "areaVal", "areaOk", "elementsVal", "elementsOk", "STORAGE_KEY", "MAX_QUEUE_SIZE", "MAX_RETRY_COUNT", "UIn_OfflineQueue_Util", "enqueue", "params", "projectId", "rawContent", "trim", "item", "id", "generateId", "area", "elementIds", "savedAt", "Date", "toISOString", "retryCount", "lastError", "errorToString", "error", "queue", "loadAll", "push", "trimmed", "length", "slice", "Shr_LocalStoragePersistence_Util", "writeJson", "parsed", "readJson", "Array", "isArray", "filter", "i", "isValidItem", "remove", "filtered", "incrementRetryAndMaybeDrop", "idx", "findIndex", "newRetryCount", "__spreadProps", "__spreadValues", "clearAll", "ts", "now", "rnd", "Math", "random", "toString", "value", "obj", "err", "Error", "message", "JSON", "stringify", "UIn_QuickInputOverlayAreaId_Type", "UIn_QUICK_INPUT_OVERLAY_AREA_CATALOG", "overlayId", "UIn_QuickInputOverlayAreaId_Type", "globalErrorDetailModal", "areaValue", "displayLabel", "quickInputActionsModal", "pmManualBugModal", "UIn_QuickInputOverlayAreaCatalog_Util", "resolveAreaValueForOverlayId", "overlayId", "entry", "getEntryByOverlayId", "undefined", "areaValue", "trimmed", "trim", "length", "UIn_QUICK_INPUT_OVERLAY_AREA_CATALOG", "find", "e", "UIn_FabPosition_Util", "fabSizePx", "fabMarginPx", "fabPanelGapPx", "edgeSnapThresholdPx", "storageKey", "readStoredOffsets", "parsed", "Shr_LocalStoragePersistence_Util", "readJson", "Array", "isArray", "rightRaw", "Reflect", "get", "bottomRaw", "undefined", "rightPx", "Number", "bottomPx", "isNaN", "persistOffsets", "writeJson", "clampOffsets", "input", "m", "s", "maxRight", "Math", "max", "mainWidthPx", "mainLeftPx", "maxBottom", "mainHeightPx", "mainTopPx", "min", "snapOffsetsToMainEdges", "snap", "margin", "leftGapPx", "topGapPx", "ProjectManagement_ApiService", "baseUrl", "environment", "api", "http", "inject", "HttpClient", "listProjects", "firstValueFrom", "get", "createProject", "payload", "post", "getProject", "projectId", "updateProject", "patch", "archiveProject", "delete", "listGroups", "createGroup", "archiveGroup", "groupId", "getGroupFiles", "listAllProjectsAcrossInstances", "cloneProject", "cloneGroup", "discoverProjects", "scanPath", "refreshGitStatus", "syncProject", "syncAllProjects", "getFileContent", "fileType", "getAllFileContents", "getBugsPathResolve", "mutateControlFileEntry", "body", "clearTestErrorReports", "appendBugsFromErrors", "appendSingleBugFromError", "ccapErrorId", "enc", "encodeURIComponent", "trim", "createManualBug", "listUserRequests", "createUserRequest", "updateUserRequest", "requestId", "listQuickInputs", "listAllQuickInputs", "createQuickInput", "updateQuickInput", "quickInputId", "deleteQuickInput", "classifyQuickInputWithLlm", "bulkArchiveQuickInputs", "suggestUserInputFormat", "finalizeUserInput", "getReviewsMeta", "runProjectReviews", "reviewIds", "listAgentReports", "getAgentReportContent", "relPath", "params", "factory", "\u0275fac", "providedIn", "UIn_QUICK_INPUT_COMPOSER_PLACEHOLDER", "UIn_QUICK_INPUT_ALL_PROJECTS_FILTER", "UserInput_DataService", "AUTOFOLLOW_LS_PREFIX", "SELECTED_PROJECT_LS_KEY", "pm_AS", "inject", "ProjectManagement_ApiService", "destroyRef", "DestroyRef", "router", "Router", "projects_$", "signal", "computedCcapRevisionedHostByProjectId_$", "selectedProjectId_$", "isAllProjectsView_$", "computed", "selectedProjectIsCcapRevisionedHost_$", "projectId", "trim", "length", "quickInputComposerArea_$", "quickInputComposerElements_$", "quickInputDomPickActive_$", "quickInputDomPickHoverRect_$", "quickInputDomPickHoverLabel_$", "quickInputComposerDraftPersistBump_$", "quickInputAreaAutofollow_$", "quickInputOverlayAreaStack_$", "inputs_$", "quickInputActionsModalOpen_$", "selectedQuickInputId_$", "isPanelOpen_$", "isSending_$", "isLoading_$", "fabOffsetRightPx_$", "UIn_FabPosition_Util", "fabMarginPx", "fabOffsetBottomPx_$", "quickInputMainBoundsPx_$", "widthPx", "heightPx", "topPx", "leftPx", "constructor", "stored", "readStoredOffsets", "set", "rightPx", "bottomPx", "onResize", "mainEl", "document", "querySelector", "clampFabOffsetsToMain", "window", "addEventListener", "onDestroy", "removeEventListener", "rect", "getBoundingClientRect", "clamped", "clampOffsets", "mainWidthPx", "width", "mainHeightPx", "height", "mainTopPx", "top", "mainLeftPx", "left", "syncQuickInputMainBoundsFromRect", "setFabOffsetsClampedToMain", "input", "finalizeFabDragPosition", "snapped", "snapOffsetsToMainEdges", "persistOffsets", "syncQuickInputMainBoundsFromMainElement", "loadProjects", "__async", "response", "listProjects", "projects", "computedCcapRevisionedHostByProjectId", "readSelectedProjectFromStorage", "isStoredValid", "some", "p", "_id", "persistSelectedProjectToStorage", "hydrateQuickInputAreaPrefsForSelectedProject", "loadInputs", "error", "DyFM_Error", "logSimple", "setProject", "Shr_LocalStoragePersistence_Util", "readString", "remove", "writeString", "syncComposerAreaFromNavigation", "rawUrl", "applyComposerAreaFromRouteForAutofollow", "pushQuickInputOverlayAreaContext", "tokenTrim", "token", "areaTrim", "areaValue", "prev", "undefined", "push", "popQuickInputOverlayAreaContext", "pop", "reapplyQuickInputComposerAreaAfterOverlayChange", "stack", "url", "topFrame", "closeQuickInputActionsModalOverlayChain", "bugToken", "UIn_QuickInputOverlayAreaId_Type", "pmManualBugModal", "qiToken", "quickInputActionsModal", "pushQuickInputOverlayAreaContextByOverlayId", "overlayId", "UIn_QuickInputOverlayAreaCatalog_Util", "resolveAreaValueForOverlayId", "resolved", "UIn_QuickInputAreaCatalog_Util", "resolveAreaValueForPath", "path", "clearQuickInputOverlayAreaStack", "syncComposerAreaFromCurrentNavigation", "setQuickInputComposerAreaValueForUser", "value", "setQuickInputComposerElementsForUser", "elements", "next", "normalizeQuickInputElementIds", "current", "every", "v", "i", "appendQuickInputComposerElement", "elementId", "t", "includes", "removeQuickInputComposerElementAt", "index", "splice", "setQuickInputDomPickActive", "isEnabled", "requestComposerDraftPersistBump", "update", "n", "setQuickInputDomPickHoverPreview", "label", "applyComposerAreaFromDraftWhenManual", "areaFromDraft", "setQuickInputAreaAutofollow", "persistAutofollowToStorage", "draft", "UIn_QuickInputComposerDraft_Util", "loadPayload", "area", "readAutofollowFromStorage", "key", "raw", "Array", "isArray", "seen", "Set", "out", "item", "has", "add", "mapQuickInputToListItem", "doc", "projectNameByIdMap", "parseTaskDifficulty", "PM_QuickInputTaskDifficulty_Type", "easy", "medium", "hard", "komplex", "find", "parsePriority", "PM_Priority_Type", "low", "high", "urgent", "statusRaw", "String", "status", "PM_QuickInputStatus_Type", "parseQuickInputStatus", "promotedUserRequestIdRaw", "promotedUserRequestId", "promotedBugCodeRaw", "promotedBugCode", "predictedProjectIdRaw", "predictedProjectId", "predictedTypeRaw", "predictedType", "parseQuickInputPredictedType", "predictedCleanRaw", "predictedCleanDescription", "taskDifficultyRaw", "taskDifficulty", "priorityRaw", "priority", "areaRaw", "elementsNormalized", "Reflect", "get", "docProjectId", "titleRaw", "title", "quickInputId", "rawContent", "createdAt", "__created", "updatedAt", "projectName", "promotedUserInput", "promotedBug", "discarded", "PM_QuickInputPredictedType_Type", "userInput", "bugReport", "unspecified", "docs", "listAllQuickInputs", "listQuickInputs", "quickInputs", "nameMap", "buildProjectNameByIdMap", "map", "project", "id", "name", "submitInput", "submitInputInternal", "submitInputForGlobalError", "allowProjectFallback", "body", "areaTrimmed", "elementIds", "result", "createQuickInput", "quickInput", "list", "drainOfflineQueue", "offlineArea", "offlineElementIds", "UIn_OfflineQueue_Util", "enqueue", "pending", "loadAll", "newItem", "err", "incrementRetryAndMaybeDrop", "classifyQuickInputWithLlm", "pathId", "pathProjectId", "deleteQuickInput", "patchQuickInput", "updateQuickInput", "openQuickInputActionsModal", "closeQuickInputActionsModal", "getSelectedQuickInputListItem", "sendAllToCcSessionBusy_$", "bulkArchiveQuickInputs", "quickInputIds", "buildSendAllMessageContent", "items", "header", "join", "lines", "idx", "togglePanel", "isOpen", "openPanel", "closePanel", "factory", "\u0275fac", "providedIn", "\u0275\u0275elementStart", "\u0275\u0275text", "\u0275\u0275elementEnd", "\u0275\u0275classProp", "ctx_r1", "copyFeedback", "\u0275\u0275advance", "\u0275\u0275textInterpolate", "quickInputFeedback", "line_r3", "\u0275\u0275property", "link_r4", "href", "\u0275\u0275sanitizeUrl", "\u0275\u0275textInterpolate1", "label", "\u0275\u0275repeaterCreate", "CCAP_ErrorDisplay_Component_Conditional_0_Conditional_19_For_5_Template", "\u0275\u0275repeaterTrackByIndex", "CCAP_ErrorDisplay_Component_Conditional_0_Conditional_19_For_11_Template", "_forTrack0", "tHint_r5", "heading", "\u0275\u0275repeater", "bodyLines", "links", "\u0275\u0275textInterpolate3", "httpUrl_$", "httpStatus_$", "httpStatusText_$", "showErrSrc_r6", "\u0275\u0275template", "CCAP_ErrorDisplay_Component_Conditional_0_Conditional_21_Conditional_0_Template", "\u0275\u0275conditional", "ctx", "trim", "length", "step_r8", "detail", "CCAP_ErrorDisplay_Component_Conditional_0_Conditional_22_Conditional_5_For_4_Template", "_forTrack1", "ngDiag_r9", "summary", "toolSteps", "\u0275\u0275listener", "\u0275\u0275restoreView", "_r7", "\u0275\u0275nextContext", "\u0275\u0275resetView", "toggleNg0600SectionExpanded", "\u0275\u0275element", "CCAP_ErrorDisplay_Component_Conditional_0_Conditional_22_Conditional_5_Template", "ng0600SectionExpanded_$", "step_r11", "CCAP_ErrorDisplay_Component_Conditional_0_Conditional_23_Conditional_5_For_4_Template", "ng0203Diag_r12", "_r10", "toggleNg0203SectionExpanded", "CCAP_ErrorDisplay_Component_Conditional_0_Conditional_23_Conditional_5_Template", "ng0203SectionExpanded_$", "displayDetailsText_$", "getDisplayStack", "_r13", "toggleStackExpanded", "CCAP_ErrorDisplay_Component_Conditional_0_Conditional_30_Conditional_5_Template", "stackExpanded_$", "_r1", "copyToClipboard", "CCAP_ErrorDisplay_Component_Conditional_0_Conditional_8_Template", "sendToQuickInput", "CCAP_ErrorDisplay_Component_Conditional_0_Conditional_12_Template", "CCAP_ErrorDisplay_Component_Conditional_0_Conditional_19_Template", "CCAP_ErrorDisplay_Component_Conditional_0_Conditional_20_Template", "CCAP_ErrorDisplay_Component_Conditional_0_Conditional_21_Template", "CCAP_ErrorDisplay_Component_Conditional_0_Conditional_22_Template", "CCAP_ErrorDisplay_Component_Conditional_0_Conditional_23_Template", "toggleDetailsExpanded", "CCAP_ErrorDisplay_Component_Conditional_0_Conditional_29_Template", "CCAP_ErrorDisplay_Component_Conditional_0_Conditional_30_Template", "sourceLabel_$", "isSendingToQuickInput_$", "displayMessage_$", "tmp_6_0", "httpTroubleshootingHint_$", "hasHttpInfo_$", "tmp_8_0", "errorClientSource", "tmp_9_0", "effectiveNg0600Diagnostics_$", "tmp_10_0", "effectiveNg0203Diagnostics_$", "detailsExpanded_$", "hasStackSection_$", "CCAP_ErrorDisplay_Component", "error", "input", "sourceLabelOverride", "undefined", "ng0600Diagnostics", "ng0203Diagnostics", "parsedBlobMessage_$", "signal", "resolvedStack_$", "localNg0600Diagnostics_$", "localNg0203Diagnostics_$", "globalError_CS", "inject", "CCAP_GlobalError_ControlService", "userInput_DS", "UserInput_DataService", "computed", "injected", "raw", "HttpErrorResponse", "responseBody", "bodyMessage", "getBodyMessageFromResponse", "startsWith", "strictErr", "CCAP_JsonParse_Util", "tryParseStrict", "text", "contextLabel", "ok", "value", "CCAP_ErrorDisplay_Util", "getErrorMessageForDisplay", "toDisplaySafeString", "CCAP_HttpErrorMessage_Util", "getHttpErrorMessage", "CCAP_HttpErrorTroubleshootingHint_Util", "tryGetHintForUnknownError", "detailsObj", "status", "statusText", "url", "message", "JSON", "stringify", "fullMessage", "getFullErrorMessageForDisplay", "name", "Error", "stack", "String", "causeMsg", "cause", "__spreadValues", "clientSrc", "ccapClientSource", "ng0600Effective", "ng0600Detail", "ng0203Effective", "ng0203Detail", "rec", "socketUrl", "transport", "eventType", "connectAttempt", "socketUrlSource", "configuredTransports", "pageOrigin", "description", "descriptionStack", "httpStatus", "httpStatusText", "responseUrl", "errorContext", "attemptedAt", "screenId", "displayKey", "slotName", "urlType", "context", "errorCode", "additionalContent", "troubleshootingHints", "diagnosis", "websocketDetail", "displayStack_$", "errBody", "serverStack", "httpContext", "resolved", "update", "v", "override", "copyFeedbackResetMs", "second", "constructor", "effect", "set", "allowSignalWrites", "Blob", "blob", "queueMicrotask", "then", "s", "blobParse", "Array", "isArray", "obj", "Object", "fromEntries", "entries", "msg", "catch", "CCAP_Ng0600Diagnostic_Util", "isNg0600Message", "stackForDiag", "getStackForReport", "getCurrentContext", "rawRef", "setTimeout", "built", "buildDiagnostics", "route", "userAgent", "timestamp", "clientSource", "e", "DyFM_Log", "CCAP_Ng0203Diagnostic_Util", "isNg0203Message", "buildErrorText", "detailsText", "stackText", "join", "__async", "fullText", "result", "reportErrorOnly", "source", "submitInputForGlobalError", "err", "failMessage", "selectors", "inputs", "standalone", "features", "\u0275\u0275StandaloneFeature", "decls", "vars", "consts", "template", "rf", "CCAP_ErrorDisplay_Component_Conditional_0_Template", "CommonModule", "encapsulation"]
7
- }