@futdevpro/ccap 1.1.2501 → 1.1.2582

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 (316) hide show
  1. package/client-dist/{agent-instances.module-LTDXV2IY.js → agent-instances.module-7VEBBM5Y.js} +2 -2
  2. package/client-dist/ca.module-ZFHRCLF7.js +5 -0
  3. package/client-dist/ca.module-ZFHRCLF7.js.map +7 -0
  4. package/client-dist/cc.module-JZX6WYEJ.js +4 -0
  5. package/client-dist/cc.module-JZX6WYEJ.js.map +7 -0
  6. package/client-dist/{chunk-EM3SZVDU.js → chunk-25EU3GLD.js} +2 -2
  7. package/client-dist/{chunk-GFTD3PFY.js → chunk-2O52ESML.js} +2 -2
  8. package/client-dist/{chunk-UUVX445C.js → chunk-2SPJ3JFQ.js} +2 -2
  9. package/client-dist/{chunk-ZLFERKG3.js → chunk-3FTM2EWS.js} +2 -2
  10. package/client-dist/{chunk-3UOIDPAC.js → chunk-3SNKGBZL.js} +2 -2
  11. package/client-dist/{chunk-HFR2YVDI.js → chunk-3TXLV3DA.js} +2 -2
  12. package/client-dist/chunk-53QIVVCG.js +2 -0
  13. package/client-dist/chunk-53QIVVCG.js.map +7 -0
  14. package/client-dist/{chunk-WEVE5VD3.js → chunk-6BANNHB6.js} +2 -2
  15. package/client-dist/{chunk-7RCG5AUK.js → chunk-AHZ2P3Z3.js} +2 -2
  16. package/client-dist/{chunk-SUTYJTHV.js → chunk-AYBZUIVP.js} +2 -2
  17. package/client-dist/{chunk-IOTAEA7L.js → chunk-BC56SIVJ.js} +3 -3
  18. package/client-dist/chunk-BC56SIVJ.js.map +1 -0
  19. package/client-dist/{chunk-QZNDAR62.js → chunk-BDL5F3DK.js} +2 -2
  20. package/client-dist/{chunk-VWZZNYWE.js → chunk-CN2EISGD.js} +2 -2
  21. package/client-dist/{chunk-Z3GNAEVX.js → chunk-CTB35A3I.js} +3 -3
  22. package/client-dist/chunk-CTB35A3I.js.map +7 -0
  23. package/client-dist/{chunk-KPAFG4UR.js → chunk-CXE46KLX.js} +2 -2
  24. package/client-dist/{chunk-AQ6UDIDI.js → chunk-CZEGJES4.js} +2 -2
  25. package/client-dist/{chunk-ZDPUFUOX.js → chunk-D4YCGDYF.js} +2 -2
  26. package/client-dist/{chunk-UXSUGWC7.js → chunk-D5YBMGLK.js} +2 -2
  27. package/client-dist/{chunk-WBGOPUBJ.js → chunk-DR5CW2Q5.js} +2 -2
  28. package/client-dist/{chunk-ZLTD5EHK.js → chunk-DTMD64OK.js} +2 -2
  29. package/client-dist/{chunk-UI5GI7XJ.js → chunk-ERTQ57LC.js} +2 -2
  30. package/client-dist/{chunk-SCV6UFI3.js → chunk-F763HXOW.js} +2 -2
  31. package/client-dist/{chunk-2R2YN5EL.js → chunk-FH7BZ5KC.js} +2 -2
  32. package/client-dist/{chunk-OQBJMVZN.js → chunk-FKFHKEJ6.js} +2 -2
  33. package/client-dist/{chunk-GBTUS3NA.js → chunk-GH6753SA.js} +2 -2
  34. package/client-dist/{chunk-FF6BDAQ3.js → chunk-GYAPUB7L.js} +2 -2
  35. package/client-dist/{chunk-6QUQUVFA.js → chunk-IX66ULOP.js} +2 -2
  36. package/client-dist/{chunk-X7RDMQ3C.js → chunk-KNCYCQVI.js} +2 -2
  37. package/client-dist/{chunk-6DG4SANW.js → chunk-M4TYKIMG.js} +2 -2
  38. package/client-dist/{chunk-6HLT2T6S.js → chunk-NJZZZGTL.js} +2 -2
  39. package/client-dist/{chunk-6KYIRW2G.js → chunk-OVYV3NO4.js} +2 -2
  40. package/client-dist/{chunk-EGJCQMSF.js → chunk-OZ2XX74S.js} +2 -2
  41. package/client-dist/{chunk-NOJ5LBG5.js → chunk-PWFZ6PI4.js} +2 -2
  42. package/client-dist/{chunk-PPC5TB5D.js → chunk-RIPG5ILJ.js} +2 -2
  43. package/client-dist/{chunk-HXI4T6RD.js → chunk-T3KV2MBE.js} +2 -2
  44. package/client-dist/{chunk-2BHHN7VT.js → chunk-T7O5N6F5.js} +2 -2
  45. package/client-dist/{chunk-LV57US6X.js → chunk-TYFIVDHM.js} +2 -2
  46. package/client-dist/{chunk-YGNJ5SA4.js → chunk-U4EZD6B3.js} +2 -2
  47. package/client-dist/chunk-U7PPOB3Z.js +3 -0
  48. package/client-dist/{chunk-4GZ62WW2.js.map → chunk-U7PPOB3Z.js.map} +4 -4
  49. package/client-dist/{chunk-WTMQ54UE.js → chunk-UDXUA4QP.js} +2 -2
  50. package/client-dist/{chunk-MKW5NDHN.js → chunk-UKMTMXFC.js} +2 -2
  51. package/client-dist/{chunk-IF3SDXO3.js → chunk-UKTCBZ23.js} +2 -2
  52. package/client-dist/{chunk-PCOACAKZ.js → chunk-USYW262H.js} +2 -2
  53. package/client-dist/{chunk-ESXT6PE7.js → chunk-UXQXE4O4.js} +2 -2
  54. package/client-dist/{chunk-XRFAWHWF.js → chunk-VA5ORQEA.js} +2 -2
  55. package/client-dist/{chunk-XKVTWHUQ.js → chunk-VD2IXKGO.js} +2 -2
  56. package/client-dist/{chunk-BOSO7V5W.js → chunk-W3N4KJQU.js} +2 -2
  57. package/client-dist/{chunk-Q6AFYXZZ.js → chunk-WKKV76Y4.js} +2 -2
  58. package/client-dist/{chunk-QF3XZDPL.js → chunk-WRTBJFYJ.js} +2 -2
  59. package/client-dist/{chunk-APQCANPB.js → chunk-WTKKMZP3.js} +2 -2
  60. package/client-dist/{chunk-O2FFMKAR.js → chunk-XZ6U37UV.js} +2 -2
  61. package/client-dist/{chunk-OCZXZA7H.js → chunk-YKPMO3C3.js} +2 -2
  62. package/client-dist/{chunk-JVQWRB3X.js → chunk-ZIAX3RD5.js} +2 -2
  63. package/client-dist/{chunk-6UTCOTTK.js → chunk-ZPHUSRQ2.js} +2 -2
  64. package/client-dist/chunk-ZR3JTDG2.js +2 -0
  65. package/client-dist/chunk-ZR3JTDG2.js.map +7 -0
  66. package/client-dist/{chunk-XPGMSC4M.js → chunk-ZVEM6BEV.js} +2 -2
  67. package/client-dist/{consultant.module-5XH5HTTH.js → consultant.module-355QJ5VP.js} +2 -2
  68. package/client-dist/{crd.module-53UQTTLA.js → crd.module-23O7HPSP.js} +2 -2
  69. package/client-dist/{dashboard.module-KOHITRUW.js → dashboard.module-B3DBG7VA.js} +2 -2
  70. package/client-dist/do-chat-popup.component-3NJKFEEW.css.map +7 -0
  71. package/client-dist/{do-instance-panel.component-K5IGXVCT.css.map → do-instance-panel.component-MDYTDDAF.css.map} +2 -2
  72. package/client-dist/do-office-scene.component-Z3ULZ7BC.css.map +7 -0
  73. package/client-dist/do.module-T3T4EI72.js +18 -0
  74. package/client-dist/do.module-T3T4EI72.js.map +7 -0
  75. package/client-dist/{document-library.module-72JKQJ2J.js → document-library.module-HCB3IBFU.js} +2 -2
  76. package/client-dist/{embedding-eval.module-3WCRH2K6.js → embedding-eval.module-Y4S72P6L.js} +2 -2
  77. package/client-dist/{embedding-registry.module-TG4TN5QC.js → embedding-registry.module-WRLE4M2R.js} +2 -2
  78. package/client-dist/{err.module-RJW3NXTH.js → err.module-NEHVNIDC.js} +2 -2
  79. package/client-dist/{feedback.module-FWEGEGYQ.js → feedback.module-M22IIOC3.js} +2 -2
  80. package/client-dist/{host-runtime-mcp.module-KAAHVFSN.js → host-runtime-mcp.module-BTQGLDN3.js} +2 -2
  81. package/client-dist/index.html +2 -2
  82. package/client-dist/{live-dev-pipeline.module-QHCYBTUC.js → live-dev-pipeline.module-TBWOJ2K7.js} +2 -2
  83. package/client-dist/{logs.module-4LFK3T3K.js → logs.module-WLXYHRBN.js} +2 -2
  84. package/client-dist/main-CPF6CLMC.js +7 -0
  85. package/client-dist/main-CPF6CLMC.js.map +7 -0
  86. package/client-dist/{master-control-remote-poc.module-WED7JUNZ.js → master-control-remote-poc.module-NZ4AZJHI.js} +2 -2
  87. package/client-dist/{mobile-app.module-AXH7W53A.js → mobile-app.module-JUBFTHW3.js} +2 -2
  88. package/client-dist/{model-registry.module-SGHIKUWI.js → model-registry.module-AIAGFPNO.js} +2 -2
  89. package/client-dist/oc.module-KYUWTHHM.js +3 -0
  90. package/client-dist/oc.module-KYUWTHHM.js.map +7 -0
  91. package/client-dist/{orc.module-DGB2CPYK.js → orc.module-BMV7EOI7.js} +2 -2
  92. package/client-dist/{project-management.module-7PYZ6SMH.js → project-management.module-X5VO2F54.js} +11 -11
  93. package/client-dist/project-management.module-X5VO2F54.js.map +7 -0
  94. package/client-dist/project-source-routed.module-CTOB53C7.js +2 -0
  95. package/client-dist/{scheduler.module-KG43N2FH.js → scheduler.module-IKACZ62P.js} +2 -2
  96. package/client-dist/session.module-GLASF7US.js +12 -0
  97. package/client-dist/session.module-GLASF7US.js.map +7 -0
  98. package/client-dist/set.module-COGQHP7X.js +11 -0
  99. package/client-dist/{set.module-Y3LNLS4R.js.map → set.module-COGQHP7X.js.map} +3 -3
  100. package/client-dist/{setup.module-CB5LKKCH.js → setup.module-CWFUSK2V.js} +2 -2
  101. package/client-dist/styles-JBAOFG2I.css +2 -0
  102. package/client-dist/styles-JBAOFG2I.css.map +7 -0
  103. package/client-dist/{terminals.module-Y4AD2WBX.js → terminals.module-FIV7G4Y6.js} +2 -2
  104. package/client-dist/{voice-notes-poc.module-YNGGW2OL.js → voice-notes-poc.module-HWX6J3HW.js} +2 -2
  105. package/client-dist/{wfs.module-JD7CMBRB.js → wfs.module-AF5XUOHR.js} +2 -2
  106. package/package.json +1 -1
  107. package/server/build/src/_collections/core/ccap-post-services-bootstrap.util.js +1 -1
  108. package/server/build/src/_collections/core/ccap-post-services-bootstrap.util.js.map +1 -1
  109. package/server/build/src/_modules/ai-systems/_modules/model-registry/_models/data-models/mrg-instance-registry.data-model.d.ts +7 -0
  110. package/server/build/src/_modules/ai-systems/_modules/model-registry/_models/data-models/mrg-instance-registry.data-model.d.ts.map +1 -1
  111. package/server/build/src/_modules/ai-systems/_modules/model-registry/_models/data-models/mrg-instance-registry.data-model.js +8 -0
  112. package/server/build/src/_modules/ai-systems/_modules/model-registry/_models/data-models/mrg-instance-registry.data-model.js.map +1 -1
  113. package/server/build/src/_modules/ccap-agent/_modules/agent-path/_modules/default-path/default-path.util.d.ts +5 -0
  114. package/server/build/src/_modules/ccap-agent/_modules/agent-path/_modules/default-path/default-path.util.d.ts.map +1 -1
  115. package/server/build/src/_modules/ccap-agent/_modules/agent-path/_modules/default-path/default-path.util.js +19 -2
  116. package/server/build/src/_modules/ccap-agent/_modules/agent-path/_modules/default-path/default-path.util.js.map +1 -1
  117. package/server/build/src/_modules/ccap-agent/_modules/agent-path/_modules/default-path/default-path.util.spec.js +12 -0
  118. package/server/build/src/_modules/ccap-agent/_modules/agent-path/_modules/default-path/default-path.util.spec.js.map +1 -1
  119. package/server/build/src/_modules/ccap-agent/_modules/tools/_modules/fixed-tools/_modules/self/_collections/utils/self.util.d.ts +18 -1
  120. package/server/build/src/_modules/ccap-agent/_modules/tools/_modules/fixed-tools/_modules/self/_collections/utils/self.util.d.ts.map +1 -1
  121. package/server/build/src/_modules/ccap-agent/_modules/tools/_modules/fixed-tools/_modules/self/_collections/utils/self.util.js +44 -2
  122. package/server/build/src/_modules/ccap-agent/_modules/tools/_modules/fixed-tools/_modules/self/_collections/utils/self.util.js.map +1 -1
  123. package/server/build/src/_modules/ccap-agent/_modules/tools/_modules/fixed-tools/_modules/self/_collections/utils/self.util.spec.js +76 -2
  124. package/server/build/src/_modules/ccap-agent/_modules/tools/_modules/fixed-tools/_modules/self/_collections/utils/self.util.spec.js.map +1 -1
  125. package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/consts/cc-kill-reasons.const.d.ts +31 -0
  126. package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/consts/cc-kill-reasons.const.d.ts.map +1 -0
  127. package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/consts/cc-kill-reasons.const.js +29 -0
  128. package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/consts/cc-kill-reasons.const.js.map +1 -0
  129. package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/cc-transient-terminal-error.util.d.ts +28 -0
  130. package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/cc-transient-terminal-error.util.d.ts.map +1 -0
  131. package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/cc-transient-terminal-error.util.js +40 -0
  132. package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/cc-transient-terminal-error.util.js.map +1 -0
  133. package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/cc-transient-terminal-error.util.spec.d.ts +6 -0
  134. package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/cc-transient-terminal-error.util.spec.d.ts.map +1 -0
  135. package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/cc-transient-terminal-error.util.spec.js +39 -0
  136. package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/cc-transient-terminal-error.util.spec.js.map +1 -0
  137. package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/lifecycle/cc-process-exit.util.d.ts +13 -0
  138. package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/lifecycle/cc-process-exit.util.d.ts.map +1 -1
  139. package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/lifecycle/cc-process-exit.util.js +13 -3
  140. package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/lifecycle/cc-process-exit.util.js.map +1 -1
  141. package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/lifecycle/cc-process-exit.util.spec.js +40 -0
  142. package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/lifecycle/cc-process-exit.util.spec.js.map +1 -1
  143. package/server/build/src/_modules/external-sessions/_modules/claude-code/_routes/claude-code.controller.d.ts.map +1 -1
  144. package/server/build/src/_modules/external-sessions/_modules/claude-code/_routes/claude-code.controller.js +19 -0
  145. package/server/build/src/_modules/external-sessions/_modules/claude-code/_routes/claude-code.controller.js.map +1 -1
  146. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-adapter.control-service.d.ts +21 -0
  147. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-adapter.control-service.d.ts.map +1 -1
  148. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-adapter.control-service.js +45 -1
  149. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-adapter.control-service.js.map +1 -1
  150. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-manager.control-service.d.ts.map +1 -1
  151. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-manager.control-service.js +48 -11
  152. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-manager.control-service.js.map +1 -1
  153. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-route.control-service.d.ts +12 -0
  154. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-route.control-service.d.ts.map +1 -1
  155. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-route.control-service.js +87 -7
  156. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-route.control-service.js.map +1 -1
  157. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/terminal/cc-adapter-terminal-grace-period.control-service.spec.js +41 -0
  158. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/terminal/cc-adapter-terminal-grace-period.control-service.spec.js.map +1 -1
  159. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/terminal/cc-adapter-terminal-runner-versions.control-service.spec.d.ts +12 -0
  160. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/terminal/cc-adapter-terminal-runner-versions.control-service.spec.d.ts.map +1 -0
  161. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/terminal/cc-adapter-terminal-runner-versions.control-service.spec.js +62 -0
  162. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/terminal/cc-adapter-terminal-runner-versions.control-service.spec.js.map +1 -0
  163. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/terminal/cc-adapter-terminal.control-service.d.ts +32 -18
  164. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/terminal/cc-adapter-terminal.control-service.d.ts.map +1 -1
  165. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/terminal/cc-adapter-terminal.control-service.js +126 -55
  166. package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/terminal/cc-adapter-terminal.control-service.js.map +1 -1
  167. package/server/build/src/_modules/external-sessions/_services/exs-instance-registry.data-service.d.ts +1 -0
  168. package/server/build/src/_modules/external-sessions/_services/exs-instance-registry.data-service.d.ts.map +1 -1
  169. package/server/build/src/_modules/external-sessions/_services/exs-instance-registry.data-service.js +6 -0
  170. package/server/build/src/_modules/external-sessions/_services/exs-instance-registry.data-service.js.map +1 -1
  171. package/server/build/src/_modules/peer-instance/_models/interfaces/pei-bootstrap-attempt.interface.d.ts +33 -0
  172. package/server/build/src/_modules/peer-instance/_models/interfaces/pei-bootstrap-attempt.interface.d.ts.map +1 -0
  173. package/server/build/src/_modules/peer-instance/_models/interfaces/pei-bootstrap-attempt.interface.js +3 -0
  174. package/server/build/src/_modules/peer-instance/_models/interfaces/pei-bootstrap-attempt.interface.js.map +1 -0
  175. package/server/build/src/_modules/peer-instance/_services/pei-bootstrap.control-service.d.ts +33 -0
  176. package/server/build/src/_modules/peer-instance/_services/pei-bootstrap.control-service.d.ts.map +1 -1
  177. package/server/build/src/_modules/peer-instance/_services/pei-bootstrap.control-service.js +78 -1
  178. package/server/build/src/_modules/peer-instance/_services/pei-bootstrap.control-service.js.map +1 -1
  179. package/server/build/src/_modules/peer-instance/_services/pei-bootstrap.control-service.spec.js +60 -0
  180. package/server/build/src/_modules/peer-instance/_services/pei-bootstrap.control-service.spec.js.map +1 -1
  181. package/server/build/src/_modules/peer-instance/_services/pei-heartbeat.control-service.d.ts.map +1 -1
  182. package/server/build/src/_modules/peer-instance/_services/pei-heartbeat.control-service.js +3 -0
  183. package/server/build/src/_modules/peer-instance/_services/pei-heartbeat.control-service.js.map +1 -1
  184. package/server/build/src/_modules/peer-instance/_services/pei-heartbeat.control-service.spec.d.ts +9 -0
  185. package/server/build/src/_modules/peer-instance/_services/pei-heartbeat.control-service.spec.d.ts.map +1 -0
  186. package/server/build/src/_modules/peer-instance/_services/pei-heartbeat.control-service.spec.js +43 -0
  187. package/server/build/src/_modules/peer-instance/_services/pei-heartbeat.control-service.spec.js.map +1 -0
  188. package/server/build/src/_modules/peer-instance/_services/pei-ws-client.control-service.d.ts +44 -0
  189. package/server/build/src/_modules/peer-instance/_services/pei-ws-client.control-service.d.ts.map +1 -1
  190. package/server/build/src/_modules/peer-instance/_services/pei-ws-client.control-service.js +94 -0
  191. package/server/build/src/_modules/peer-instance/_services/pei-ws-client.control-service.js.map +1 -1
  192. package/server/build/src/_modules/setup-config/_models/interfaces/cluster/sc-cluster-diagnostics-result.interface.d.ts +39 -2
  193. package/server/build/src/_modules/setup-config/_models/interfaces/cluster/sc-cluster-diagnostics-result.interface.d.ts.map +1 -1
  194. package/server/build/src/_modules/setup-config/_models/interfaces/cluster/sc-cluster-diagnostics-result.interface.js +0 -7
  195. package/server/build/src/_modules/setup-config/_models/interfaces/cluster/sc-cluster-diagnostics-result.interface.js.map +1 -1
  196. package/server/build/src/_modules/setup-config/_models/interfaces/cluster/sc-cluster-reconnect-peer-result.interface.d.ts +13 -0
  197. package/server/build/src/_modules/setup-config/_models/interfaces/cluster/sc-cluster-reconnect-peer-result.interface.d.ts.map +1 -0
  198. package/server/build/src/_modules/setup-config/_models/interfaces/cluster/sc-cluster-reconnect-peer-result.interface.js +3 -0
  199. package/server/build/src/_modules/setup-config/_models/interfaces/cluster/sc-cluster-reconnect-peer-result.interface.js.map +1 -0
  200. package/server/build/src/_modules/setup-config/_models/interfaces/cluster/sc-cluster-reconnect-ws-result.interface.d.ts +23 -0
  201. package/server/build/src/_modules/setup-config/_models/interfaces/cluster/sc-cluster-reconnect-ws-result.interface.d.ts.map +1 -0
  202. package/server/build/src/_modules/setup-config/_models/interfaces/cluster/sc-cluster-reconnect-ws-result.interface.js +3 -0
  203. package/server/build/src/_modules/setup-config/_models/interfaces/cluster/sc-cluster-reconnect-ws-result.interface.js.map +1 -0
  204. package/server/build/src/_modules/setup-config/_routes/setup-config.controller.d.ts.map +1 -1
  205. package/server/build/src/_modules/setup-config/_routes/setup-config.controller.js +24 -0
  206. package/server/build/src/_modules/setup-config/_routes/setup-config.controller.js.map +1 -1
  207. package/server/build/src/_modules/setup-config/_services/control-services/sc-cluster.control-service.d.ts +43 -5
  208. package/server/build/src/_modules/setup-config/_services/control-services/sc-cluster.control-service.d.ts.map +1 -1
  209. package/server/build/src/_modules/setup-config/_services/control-services/sc-cluster.control-service.js +156 -7
  210. package/server/build/src/_modules/setup-config/_services/control-services/sc-cluster.control-service.js.map +1 -1
  211. package/server/build/src/_modules/setup-config/_services/control-services/sc-cluster.control-service.spec.d.ts +4 -3
  212. package/server/build/src/_modules/setup-config/_services/control-services/sc-cluster.control-service.spec.d.ts.map +1 -1
  213. package/server/build/src/_modules/setup-config/_services/control-services/sc-cluster.control-service.spec.js +91 -3
  214. package/server/build/src/_modules/setup-config/_services/control-services/sc-cluster.control-service.spec.js.map +1 -1
  215. package/server/build/src/_modules/setup-config/_services/setup-config.control-service.js +1 -1
  216. package/server/build/src/_modules/setup-config/_services/setup-config.control-service.js.map +1 -1
  217. package/client-dist/ca.module-X4AI3X6G.js +0 -5
  218. package/client-dist/ca.module-X4AI3X6G.js.map +0 -7
  219. package/client-dist/cc.module-6QEV2L5A.js +0 -4
  220. package/client-dist/cc.module-6QEV2L5A.js.map +0 -7
  221. package/client-dist/chunk-4GZ62WW2.js +0 -3
  222. package/client-dist/chunk-EIOAQCYO.js +0 -2
  223. package/client-dist/chunk-EIOAQCYO.js.map +0 -7
  224. package/client-dist/chunk-IOTAEA7L.js.map +0 -1
  225. package/client-dist/chunk-W5MWZVSL.js +0 -2
  226. package/client-dist/chunk-W5MWZVSL.js.map +0 -7
  227. package/client-dist/chunk-Z3GNAEVX.js.map +0 -7
  228. package/client-dist/do-character.component-7LDXQOB6.css.map +0 -7
  229. package/client-dist/do-chat-popup.component-FXZ46EHV.css.map +0 -7
  230. package/client-dist/do-office-scene.component-ILYUPFGH.css.map +0 -7
  231. package/client-dist/do.module-EOBGMEAU.js +0 -18
  232. package/client-dist/do.module-EOBGMEAU.js.map +0 -7
  233. package/client-dist/main-LZQUL77P.js +0 -7
  234. package/client-dist/main-LZQUL77P.js.map +0 -7
  235. package/client-dist/oc.module-JNAPKZRS.js +0 -3
  236. package/client-dist/oc.module-JNAPKZRS.js.map +0 -7
  237. package/client-dist/project-management.module-7PYZ6SMH.js.map +0 -7
  238. package/client-dist/project-source-routed.module-B5RDOGY7.js +0 -2
  239. package/client-dist/session.module-T5TLRVUA.js +0 -12
  240. package/client-dist/session.module-T5TLRVUA.js.map +0 -7
  241. package/client-dist/set.module-Y3LNLS4R.js +0 -11
  242. package/client-dist/styles-ILB5HBSL.css +0 -2
  243. package/client-dist/styles-ILB5HBSL.css.map +0 -7
  244. /package/client-dist/{agent-instances.module-LTDXV2IY.js.map → agent-instances.module-7VEBBM5Y.js.map} +0 -0
  245. /package/client-dist/{chunk-EM3SZVDU.js.map → chunk-25EU3GLD.js.map} +0 -0
  246. /package/client-dist/{chunk-GFTD3PFY.js.map → chunk-2O52ESML.js.map} +0 -0
  247. /package/client-dist/{chunk-UUVX445C.js.map → chunk-2SPJ3JFQ.js.map} +0 -0
  248. /package/client-dist/{chunk-ZLFERKG3.js.map → chunk-3FTM2EWS.js.map} +0 -0
  249. /package/client-dist/{chunk-3UOIDPAC.js.map → chunk-3SNKGBZL.js.map} +0 -0
  250. /package/client-dist/{chunk-HFR2YVDI.js.map → chunk-3TXLV3DA.js.map} +0 -0
  251. /package/client-dist/{chunk-WEVE5VD3.js.map → chunk-6BANNHB6.js.map} +0 -0
  252. /package/client-dist/{chunk-7RCG5AUK.js.map → chunk-AHZ2P3Z3.js.map} +0 -0
  253. /package/client-dist/{chunk-SUTYJTHV.js.map → chunk-AYBZUIVP.js.map} +0 -0
  254. /package/client-dist/{chunk-QZNDAR62.js.map → chunk-BDL5F3DK.js.map} +0 -0
  255. /package/client-dist/{chunk-VWZZNYWE.js.map → chunk-CN2EISGD.js.map} +0 -0
  256. /package/client-dist/{chunk-KPAFG4UR.js.map → chunk-CXE46KLX.js.map} +0 -0
  257. /package/client-dist/{chunk-AQ6UDIDI.js.map → chunk-CZEGJES4.js.map} +0 -0
  258. /package/client-dist/{chunk-ZDPUFUOX.js.map → chunk-D4YCGDYF.js.map} +0 -0
  259. /package/client-dist/{chunk-UXSUGWC7.js.map → chunk-D5YBMGLK.js.map} +0 -0
  260. /package/client-dist/{chunk-WBGOPUBJ.js.map → chunk-DR5CW2Q5.js.map} +0 -0
  261. /package/client-dist/{chunk-ZLTD5EHK.js.map → chunk-DTMD64OK.js.map} +0 -0
  262. /package/client-dist/{chunk-UI5GI7XJ.js.map → chunk-ERTQ57LC.js.map} +0 -0
  263. /package/client-dist/{chunk-SCV6UFI3.js.map → chunk-F763HXOW.js.map} +0 -0
  264. /package/client-dist/{chunk-2R2YN5EL.js.map → chunk-FH7BZ5KC.js.map} +0 -0
  265. /package/client-dist/{chunk-OQBJMVZN.js.map → chunk-FKFHKEJ6.js.map} +0 -0
  266. /package/client-dist/{chunk-GBTUS3NA.js.map → chunk-GH6753SA.js.map} +0 -0
  267. /package/client-dist/{chunk-FF6BDAQ3.js.map → chunk-GYAPUB7L.js.map} +0 -0
  268. /package/client-dist/{chunk-6QUQUVFA.js.map → chunk-IX66ULOP.js.map} +0 -0
  269. /package/client-dist/{chunk-X7RDMQ3C.js.map → chunk-KNCYCQVI.js.map} +0 -0
  270. /package/client-dist/{chunk-6DG4SANW.js.map → chunk-M4TYKIMG.js.map} +0 -0
  271. /package/client-dist/{chunk-6HLT2T6S.js.map → chunk-NJZZZGTL.js.map} +0 -0
  272. /package/client-dist/{chunk-6KYIRW2G.js.map → chunk-OVYV3NO4.js.map} +0 -0
  273. /package/client-dist/{chunk-EGJCQMSF.js.map → chunk-OZ2XX74S.js.map} +0 -0
  274. /package/client-dist/{chunk-NOJ5LBG5.js.map → chunk-PWFZ6PI4.js.map} +0 -0
  275. /package/client-dist/{chunk-PPC5TB5D.js.map → chunk-RIPG5ILJ.js.map} +0 -0
  276. /package/client-dist/{chunk-HXI4T6RD.js.map → chunk-T3KV2MBE.js.map} +0 -0
  277. /package/client-dist/{chunk-2BHHN7VT.js.map → chunk-T7O5N6F5.js.map} +0 -0
  278. /package/client-dist/{chunk-LV57US6X.js.map → chunk-TYFIVDHM.js.map} +0 -0
  279. /package/client-dist/{chunk-YGNJ5SA4.js.map → chunk-U4EZD6B3.js.map} +0 -0
  280. /package/client-dist/{chunk-WTMQ54UE.js.map → chunk-UDXUA4QP.js.map} +0 -0
  281. /package/client-dist/{chunk-MKW5NDHN.js.map → chunk-UKMTMXFC.js.map} +0 -0
  282. /package/client-dist/{chunk-IF3SDXO3.js.map → chunk-UKTCBZ23.js.map} +0 -0
  283. /package/client-dist/{chunk-PCOACAKZ.js.map → chunk-USYW262H.js.map} +0 -0
  284. /package/client-dist/{chunk-ESXT6PE7.js.map → chunk-UXQXE4O4.js.map} +0 -0
  285. /package/client-dist/{chunk-XRFAWHWF.js.map → chunk-VA5ORQEA.js.map} +0 -0
  286. /package/client-dist/{chunk-XKVTWHUQ.js.map → chunk-VD2IXKGO.js.map} +0 -0
  287. /package/client-dist/{chunk-BOSO7V5W.js.map → chunk-W3N4KJQU.js.map} +0 -0
  288. /package/client-dist/{chunk-Q6AFYXZZ.js.map → chunk-WKKV76Y4.js.map} +0 -0
  289. /package/client-dist/{chunk-QF3XZDPL.js.map → chunk-WRTBJFYJ.js.map} +0 -0
  290. /package/client-dist/{chunk-APQCANPB.js.map → chunk-WTKKMZP3.js.map} +0 -0
  291. /package/client-dist/{chunk-O2FFMKAR.js.map → chunk-XZ6U37UV.js.map} +0 -0
  292. /package/client-dist/{chunk-OCZXZA7H.js.map → chunk-YKPMO3C3.js.map} +0 -0
  293. /package/client-dist/{chunk-JVQWRB3X.js.map → chunk-ZIAX3RD5.js.map} +0 -0
  294. /package/client-dist/{chunk-6UTCOTTK.js.map → chunk-ZPHUSRQ2.js.map} +0 -0
  295. /package/client-dist/{chunk-XPGMSC4M.js.map → chunk-ZVEM6BEV.js.map} +0 -0
  296. /package/client-dist/{consultant.module-5XH5HTTH.js.map → consultant.module-355QJ5VP.js.map} +0 -0
  297. /package/client-dist/{crd.module-53UQTTLA.js.map → crd.module-23O7HPSP.js.map} +0 -0
  298. /package/client-dist/{dashboard.module-KOHITRUW.js.map → dashboard.module-B3DBG7VA.js.map} +0 -0
  299. /package/client-dist/{document-library.module-72JKQJ2J.js.map → document-library.module-HCB3IBFU.js.map} +0 -0
  300. /package/client-dist/{embedding-eval.module-3WCRH2K6.js.map → embedding-eval.module-Y4S72P6L.js.map} +0 -0
  301. /package/client-dist/{embedding-registry.module-TG4TN5QC.js.map → embedding-registry.module-WRLE4M2R.js.map} +0 -0
  302. /package/client-dist/{err.module-RJW3NXTH.js.map → err.module-NEHVNIDC.js.map} +0 -0
  303. /package/client-dist/{feedback.module-FWEGEGYQ.js.map → feedback.module-M22IIOC3.js.map} +0 -0
  304. /package/client-dist/{host-runtime-mcp.module-KAAHVFSN.js.map → host-runtime-mcp.module-BTQGLDN3.js.map} +0 -0
  305. /package/client-dist/{live-dev-pipeline.module-QHCYBTUC.js.map → live-dev-pipeline.module-TBWOJ2K7.js.map} +0 -0
  306. /package/client-dist/{logs.module-4LFK3T3K.js.map → logs.module-WLXYHRBN.js.map} +0 -0
  307. /package/client-dist/{master-control-remote-poc.module-WED7JUNZ.js.map → master-control-remote-poc.module-NZ4AZJHI.js.map} +0 -0
  308. /package/client-dist/{mobile-app.module-AXH7W53A.js.map → mobile-app.module-JUBFTHW3.js.map} +0 -0
  309. /package/client-dist/{model-registry.module-SGHIKUWI.js.map → model-registry.module-AIAGFPNO.js.map} +0 -0
  310. /package/client-dist/{orc.module-DGB2CPYK.js.map → orc.module-BMV7EOI7.js.map} +0 -0
  311. /package/client-dist/{project-source-routed.module-B5RDOGY7.js.map → project-source-routed.module-CTOB53C7.js.map} +0 -0
  312. /package/client-dist/{scheduler.module-KG43N2FH.js.map → scheduler.module-IKACZ62P.js.map} +0 -0
  313. /package/client-dist/{setup.module-CB5LKKCH.js.map → setup.module-CWFUSK2V.js.map} +0 -0
  314. /package/client-dist/{terminals.module-Y4AD2WBX.js.map → terminals.module-FIV7G4Y6.js.map} +0 -0
  315. /package/client-dist/{voice-notes-poc.module-YNGGW2OL.js.map → voice-notes-poc.module-HWX6J3HW.js.map} +0 -0
  316. /package/client-dist/{wfs.module-JD7CMBRB.js.map → wfs.module-AF5XUOHR.js.map} +0 -0
@@ -1,5 +1,6 @@
1
1
  import { DyNTS_SingletonService } from '@futdevpro/nts-dynamo';
2
2
  import { SC_Cache_ControlService } from '../../setup-config/_services/control-services/sc-cache.control-service';
3
+ import { PEI_BootstrapAttempt_Interface } from '../_models/interfaces/pei-bootstrap-attempt.interface';
3
4
  /**
4
5
  * PEI cluster bootstrap service: peer-instance kommunikáció inicializálása.
5
6
  * Cluster settings alapján eldönti, hogy a PEI aktív-e (sharedSecret megléte),
@@ -16,8 +17,35 @@ export declare class PEI_Bootstrap_ControlService extends DyNTS_SingletonService
16
17
  * silent failure (BUG-CCI-CROSS-001 v1.1.1460 user reprodukció).
17
18
  */
18
19
  private isBootstrappedFlag;
20
+ /**
21
+ * REQ-CLUSTER-DEBUG-WS-001 (Slice B): a sikeres bootstrap timestamp-je —
22
+ * `null` ha még nem futott le.
23
+ */
24
+ private bootstrappedAtMs;
25
+ /**
26
+ * REQ-CLUSTER-DEBUG-WS-001 (Slice B): bootstrap-attempt ring buffer (max 50 elem,
27
+ * legutóbbi a végén). A diagnostics endpoint az utolsó N-t adja vissza a UI-nak.
28
+ * Ezzel láthatóvá válik, hogy a „folyamatosan újra kell bootstrap-elni" tünet
29
+ * mögött tényleg ismétlődő hívások állnak-e, és ha igen, milyen forrásból.
30
+ */
31
+ private bootstrapAttempts;
32
+ private static readonly MAX_BOOTSTRAP_ATTEMPTS_KEPT;
19
33
  /** Public read-only accessor a bootstrapped státuszhoz (BUG-CCI-CROSS-001). */
20
34
  isBootstrapped(): boolean;
35
+ /**
36
+ * REQ-CLUSTER-DEBUG-WS-001 (Slice B): a sikeres bootstrap timestamp-je
37
+ * (`null` ha sose volt sikeres). A diagnostics ezt veszi át.
38
+ */
39
+ getBootstrappedAtMs(): number | null;
40
+ /**
41
+ * REQ-CLUSTER-DEBUG-WS-001 (Slice B): a bootstrap-attempt-ek read-only másolata
42
+ * (legutóbbi-elöl rendezésben az UI-nak).
43
+ */
44
+ getBootstrapAttempts(): PEI_BootstrapAttempt_Interface[];
45
+ /**
46
+ * REQ-CLUSTER-DEBUG-WS-001 (Slice B): új attempt rögzítése a ring buffer-be.
47
+ */
48
+ private recordAttempt;
21
49
  /**
22
50
  * Cycle 776: Lazy re-bootstrap kísérlet a `dispatchToRemote` fail-fast
23
51
  * útvonalához. Ha a flag false, a hívó (PEI_Dispatch) ezt hívja MEG hogy
@@ -55,6 +83,11 @@ export declare class PEI_Bootstrap_ControlService extends DyNTS_SingletonService
55
83
  */
56
84
  bootstrapIfConfigured(params: {
57
85
  setupConfig: SC_Cache_ControlService;
86
+ /**
87
+ * REQ-CLUSTER-DEBUG-WS-001 (Slice B): ki hívja a bootstrap-et — a debug-panelen
88
+ * látható forrásként, hogy a re-bootstrap loop forrását azonosítani lehessen.
89
+ */
90
+ source?: PEI_BootstrapAttempt_Interface['source'];
58
91
  }): void;
59
92
  }
60
93
  //# sourceMappingURL=pei-bootstrap.control-service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pei-bootstrap.control-service.d.ts","sourceRoot":"","sources":["../../../../../src/_modules/peer-instance/_services/pei-bootstrap.control-service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,wEAAwE,CAAC;AAcjH;;;;;;GAMG;AACH,qBAAa,4BAA6B,SAAQ,sBAAsB;IAEtE,MAAM,CAAC,WAAW,IAAI,4BAA4B;IAIlD;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB,CAAkB;IAE5C,+EAA+E;IAC/E,cAAc,IAAI,OAAO;IAIzB;;;;;;;;;;;;;;;;;;;;OAoBG;IACG,sBAAsB,CAAC,MAAM,EAAE;QACnC,WAAW,EAAE,uBAAuB,CAAC;KACtC,GAAG,OAAO,CAAC,IAAI,CAAC;IAejB;;;;;;;;;;OAUG;IACH,qBAAqB,CAAC,MAAM,EAAE;QAAE,WAAW,EAAE,uBAAuB,CAAA;KAAE,GAAG,IAAI;CAmG9E"}
1
+ {"version":3,"file":"pei-bootstrap.control-service.d.ts","sourceRoot":"","sources":["../../../../../src/_modules/peer-instance/_services/pei-bootstrap.control-service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,wEAAwE,CAAC;AAGjH,OAAO,EACL,8BAA8B,EAE/B,MAAM,uDAAuD,CAAC;AAY/D;;;;;;GAMG;AACH,qBAAa,4BAA6B,SAAQ,sBAAsB;IAEtE,MAAM,CAAC,WAAW,IAAI,4BAA4B;IAIlD;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB,CAAkB;IAE5C;;;OAGG;IACH,OAAO,CAAC,gBAAgB,CAAuB;IAE/C;;;;;OAKG;IACH,OAAO,CAAC,iBAAiB,CAAwC;IAEjE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,2BAA2B,CAAc;IAEjE,+EAA+E;IAC/E,cAAc,IAAI,OAAO;IAIzB;;;OAGG;IACH,mBAAmB,IAAI,MAAM,GAAG,IAAI;IAIpC;;;OAGG;IACH,oBAAoB,IAAI,8BAA8B,EAAE;IAOxD;;OAEG;IACH,OAAO,CAAC,aAAa;IAyBrB;;;;;;;;;;;;;;;;;;;;OAoBG;IACG,sBAAsB,CAAC,MAAM,EAAE;QACnC,WAAW,EAAE,uBAAuB,CAAC;KACtC,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBjB;;;;;;;;;;OAUG;IACH,qBAAqB,CAAC,MAAM,EAAE;QAC5B,WAAW,EAAE,uBAAuB,CAAC;QACrC;;;WAGG;QACH,MAAM,CAAC,EAAE,8BAA8B,CAAC,QAAQ,CAAC,CAAC;KACnD,GAAG,IAAI;CAyHT"}
@@ -32,10 +32,60 @@ class PEI_Bootstrap_ControlService extends nts_dynamo_1.DyNTS_SingletonService {
32
32
  * silent failure (BUG-CCI-CROSS-001 v1.1.1460 user reprodukció).
33
33
  */
34
34
  isBootstrappedFlag = false;
35
+ /**
36
+ * REQ-CLUSTER-DEBUG-WS-001 (Slice B): a sikeres bootstrap timestamp-je —
37
+ * `null` ha még nem futott le.
38
+ */
39
+ bootstrappedAtMs = null;
40
+ /**
41
+ * REQ-CLUSTER-DEBUG-WS-001 (Slice B): bootstrap-attempt ring buffer (max 50 elem,
42
+ * legutóbbi a végén). A diagnostics endpoint az utolsó N-t adja vissza a UI-nak.
43
+ * Ezzel láthatóvá válik, hogy a „folyamatosan újra kell bootstrap-elni" tünet
44
+ * mögött tényleg ismétlődő hívások állnak-e, és ha igen, milyen forrásból.
45
+ */
46
+ bootstrapAttempts = [];
47
+ static MAX_BOOTSTRAP_ATTEMPTS_KEPT = 50;
35
48
  /** Public read-only accessor a bootstrapped státuszhoz (BUG-CCI-CROSS-001). */
36
49
  isBootstrapped() {
37
50
  return this.isBootstrappedFlag;
38
51
  }
52
+ /**
53
+ * REQ-CLUSTER-DEBUG-WS-001 (Slice B): a sikeres bootstrap timestamp-je
54
+ * (`null` ha sose volt sikeres). A diagnostics ezt veszi át.
55
+ */
56
+ getBootstrappedAtMs() {
57
+ return this.bootstrappedAtMs;
58
+ }
59
+ /**
60
+ * REQ-CLUSTER-DEBUG-WS-001 (Slice B): a bootstrap-attempt-ek read-only másolata
61
+ * (legutóbbi-elöl rendezésben az UI-nak).
62
+ */
63
+ getBootstrapAttempts() {
64
+ if (!Array.isArray(this.bootstrapAttempts)) {
65
+ return [];
66
+ }
67
+ return this.bootstrapAttempts.slice().reverse();
68
+ }
69
+ /**
70
+ * REQ-CLUSTER-DEBUG-WS-001 (Slice B): új attempt rögzítése a ring buffer-be.
71
+ */
72
+ recordAttempt(params) {
73
+ // Defensive init: a meglévő spec-ek `Object.create(prototype)`-tal hoznak létre
74
+ // szolgáltatás-instance-t (cycle 187 minta), ami nem futtatja a class-szintű
75
+ // property-initializer-eket — `bootstrapAttempts` ilyenkor `undefined`.
76
+ if (!Array.isArray(this.bootstrapAttempts)) {
77
+ this.bootstrapAttempts = [];
78
+ }
79
+ this.bootstrapAttempts.push({
80
+ atMs: Date.now(),
81
+ source: params.source,
82
+ result: params.result,
83
+ reason: params.reason,
84
+ });
85
+ if (this.bootstrapAttempts.length > PEI_Bootstrap_ControlService.MAX_BOOTSTRAP_ATTEMPTS_KEPT) {
86
+ this.bootstrapAttempts.splice(0, this.bootstrapAttempts.length - PEI_Bootstrap_ControlService.MAX_BOOTSTRAP_ATTEMPTS_KEPT);
87
+ }
88
+ }
39
89
  /**
40
90
  * Cycle 776: Lazy re-bootstrap kísérlet a `dispatchToRemote` fail-fast
41
91
  * útvonalához. Ha a flag false, a hívó (PEI_Dispatch) ezt hívja MEG hogy
@@ -63,10 +113,15 @@ class PEI_Bootstrap_ControlService extends nts_dynamo_1.DyNTS_SingletonService {
63
113
  }
64
114
  try {
65
115
  await params.setupConfig.loadSections();
66
- this.bootstrapIfConfigured({ setupConfig: params.setupConfig });
116
+ this.bootstrapIfConfigured({ setupConfig: params.setupConfig, source: 'lazy-rebootstrap' });
67
117
  }
68
118
  catch (err) {
69
119
  fsm_dynamo_1.DyFM_Error.logSimple('PEI | Lazy re-bootstrap attempt failed (non-fatal)', err);
120
+ this.recordAttempt({
121
+ source: 'lazy-rebootstrap',
122
+ result: 'error',
123
+ reason: err instanceof Error ? err.message : String(err),
124
+ });
70
125
  }
71
126
  }
72
127
  /**
@@ -81,15 +136,26 @@ class PEI_Bootstrap_ControlService extends nts_dynamo_1.DyNTS_SingletonService {
81
136
  * le a futó kapcsolatokat — az még szerver-restart-ot igényel; plan-méretű follow-up.
82
137
  */
83
138
  bootstrapIfConfigured(params) {
139
+ const source = params.source ?? 'unknown';
84
140
  try {
85
141
  if (this.isBootstrappedFlag) {
86
142
  fsm_dynamo_1.DyFM_Log.info('PEI | Bootstrap already done — skipping (sharedSecret rotation requires server restart)');
143
+ this.recordAttempt({
144
+ source: source,
145
+ result: 'already-bootstrapped',
146
+ reason: 'isBootstrappedFlag === true',
147
+ });
87
148
  return;
88
149
  }
89
150
  const clusterSection = params.setupConfig.getSectionSync(sc_enums_1.SC_Type.cluster);
90
151
  const peiSharedSecret = clusterSection?.sharedSecret?.trim() ?? '';
91
152
  if (!peiSharedSecret) {
92
153
  fsm_dynamo_1.DyFM_Log.warn('PEI | Cluster sharedSecret not configured — peer communication disabled');
154
+ this.recordAttempt({
155
+ source: source,
156
+ result: 'no-shared-secret',
157
+ reason: 'sharedSecret empty in cache',
158
+ });
93
159
  return;
94
160
  }
95
161
  const peiHttpPort = +(process.env.CCAP_HTTP_PORT ?? 39050);
@@ -156,10 +222,21 @@ class PEI_Bootstrap_ControlService extends nts_dynamo_1.DyNTS_SingletonService {
156
222
  }
157
223
  });
158
224
  this.isBootstrappedFlag = true;
225
+ this.bootstrappedAtMs = Date.now();
226
+ this.recordAttempt({
227
+ source: source,
228
+ result: 'bootstrapped',
229
+ reason: `port: ${peiHttpPort}, https: ${peiIsHttps}`,
230
+ });
159
231
  fsm_dynamo_1.DyFM_Log.success(`PEI | Bootstrap done | port: ${peiHttpPort} | https: ${peiIsHttps}`);
160
232
  }
161
233
  catch (peiErr) {
162
234
  fsm_dynamo_1.DyFM_Error.logSimple('PEI | Bootstrap failed (non-fatal)', peiErr);
235
+ this.recordAttempt({
236
+ source: source,
237
+ result: 'error',
238
+ reason: peiErr instanceof Error ? peiErr.message : String(peiErr),
239
+ });
163
240
  }
164
241
  }
165
242
  }
@@ -1 +1 @@
1
- {"version":3,"file":"pei-bootstrap.control-service.js","sourceRoot":"","sources":["../../../../../src/_modules/peer-instance/_services/pei-bootstrap.control-service.ts"],"names":[],"mappings":";;;AAAA,sDAA6D;AAC7D,sDAA+D;AAG/D,iEAA6D;AAC7D,qEAAiE;AAEjE,mFAA+E;AAC/E,uFAAkF;AAClF,uFAAkF;AAClF,mFAA8E;AAC9E,+FAA0F;AAC1F,wGAAkG;AAClG,sGAAgG;AAChG,sFAAkF;AAClF,0FAAsF;AAEtF;;;;;;GAMG;AACH,MAAa,4BAA6B,SAAQ,mCAAsB;IAEtE,MAAM,CAAC,WAAW;QAChB,OAAO,4BAA4B,CAAC,oBAAoB,EAAE,CAAC;IAC7D,CAAC;IAED;;;;;OAKG;IACK,kBAAkB,GAAY,KAAK,CAAC;IAE5C,+EAA+E;IAC/E,cAAc;QACZ,OAAO,IAAI,CAAC,kBAAkB,CAAC;IACjC,CAAC;IAED;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,KAAK,CAAC,sBAAsB,CAAC,MAE5B;QACC,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC5B,OAAO;QACT,CAAC;QACD,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;YACxC,IAAI,CAAC,qBAAqB,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;QAClE,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,uBAAU,CAAC,SAAS,CAClB,oDAAoD,EACpD,GAAG,CACJ,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;;;;;;;;OAUG;IACH,qBAAqB,CAAC,MAAgD;QACpE,IAAI,CAAC;YACH,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBAC5B,qBAAQ,CAAC,IAAI,CACX,yFAAyF,CAC1F,CAAC;gBACF,OAAO;YACT,CAAC;YAED,MAAM,cAAc,GAClB,MAAM,CAAC,WAAW,CAAC,cAAc,CAAgC,kBAAO,CAAC,OAAO,CAAC,CAAC;YACpF,MAAM,eAAe,GAAW,cAAc,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;YAE3E,IAAI,CAAC,eAAe,EAAE,CAAC;gBACrB,qBAAQ,CAAC,IAAI,CAAC,yEAAyE,CAAC,CAAC;gBACzF,OAAO;YACT,CAAC;YAED,MAAM,WAAW,GAAW,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,KAAK,CAAC,CAAC;YACnE,MAAM,UAAU,GAAY,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;YAE9D,kFAAkF;YAClF,4DAA4B,CAAC,WAAW,EAAE;iBACvC,KAAK,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAE,UAAU,EAAE,CAAC;iBAC5D,KAAK,CAAC,CAAC,GAAY,EAAQ,EAAE;gBAC5B,uBAAU,CAAC,SAAS,CAAC,8BAA8B,EAAE,GAAG,CAAC,CAAC;YAC5D,CAAC,CAAC,CAAC;YAEL,iFAAiF;YACjF,MAAM,eAAe,GAAuB,cAAc,EAAE,mBAAmB,CAAC;YAChF,+DAA6B,CAAC,WAAW,EAAE;iBACxC,KAAK,CAAC,EAAE,eAAe,EAAE,eAAe,EAAE,CAAC;iBAC3C,KAAK,CAAC,CAAC,GAAY,EAAQ,EAAE;gBAC5B,uBAAU,CAAC,SAAS,CAAC,gCAAgC,EAAE,GAAG,CAAC,CAAC;YAC9D,CAAC,CAAC,CAAC;YAEL,wEAAwE;YACxE,MAAM,cAAc,GAAuB,cAAc,EAAE,qBAAqB,CAAC;YACjF,+DAA6B,CAAC,WAAW,EAAE;iBACxC,KAAK,CAAC,EAAE,cAAc,EAAE,cAAc,EAAE,CAAC,CAAC;YAE7C,sEAAsE;YACtE,2DAA2B,CAAC,WAAW,EAAE;iBACtC,KAAK,CAAC,EAAE,YAAY,EAAE,eAAe,EAAE,CAAC;iBACxC,KAAK,CAAC,CAAC,GAAY,EAAQ,EAAE;gBAC5B,uBAAU,CAAC,SAAS,CAAC,8BAA8B,EAAE,GAAG,CAAC,CAAC;YAC5D,CAAC,CAAC,CAAC;YAEL,4CAA4C;YAC5C,MAAM,UAAU,GAAsC,uEAAiC,CAAC,WAAW,EAAE,CAAC;YACtG,UAAU,CAAC,eAAe,CAAC;gBACzB,QAAQ,EAAE,sCAAiB,CAAC,gBAAgB;gBAC5C,OAAO,EAAE,IAAI,8DAA4B,EAAE;aAC5C,CAAC,CAAC;YACH,UAAU,CAAC,eAAe,CAAC;gBACzB,QAAQ,EAAE,sCAAiB,CAAC,eAAe;gBAC3C,OAAO,EAAE,IAAI,4DAA2B,EAAE;aAC3C,CAAC,CAAC;YAEH,6FAA6F;YAC7F,MAAM,gBAAgB,GAA0B,IAAI,8CAAqB,EAAE,CAAC;YAC5E,UAAU,CAAC,eAAe,CAAC,EAAE,QAAQ,EAAE,sCAAiB,CAAC,eAAe,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC,CAAC;YACvG,UAAU,CAAC,eAAe,CAAC,EAAE,QAAQ,EAAE,sCAAiB,CAAC,eAAe,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC,CAAC;YACvG,UAAU,CAAC,eAAe,CAAC,EAAE,QAAQ,EAAE,sCAAiB,CAAC,kBAAkB,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC,CAAC;YAC1G,UAAU,CAAC,eAAe,CAAC,EAAE,QAAQ,EAAE,sCAAiB,CAAC,sBAAsB,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC,CAAC;YAC9G,UAAU,CAAC,eAAe,CAAC,EAAE,QAAQ,EAAE,sCAAiB,CAAC,qBAAqB,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC,CAAC;YAC7G,UAAU,CAAC,eAAe,CAAC,EAAE,QAAQ,EAAE,sCAAiB,CAAC,gBAAgB,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC,CAAC;YACxG,UAAU,CAAC,eAAe,CAAC,EAAE,QAAQ,EAAE,sCAAiB,CAAC,eAAe,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC,CAAC;YAEvG,uEAAuE;YACvE,yDAAyD;YACzD,MAAM,kBAAkB,GAA4B,IAAI,kDAAuB,EAAE,CAAC;YAClF,UAAU,CAAC,eAAe,CAAC,EAAE,QAAQ,EAAE,sCAAiB,CAAC,qBAAqB,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC,CAAC;YAC/G,UAAU,CAAC,eAAe,CAAC,EAAE,QAAQ,EAAE,sCAAiB,CAAC,oBAAoB,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC,CAAC;YAC9G,UAAU,CAAC,eAAe,CAAC,EAAE,QAAQ,EAAE,sCAAiB,CAAC,kBAAkB,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC,CAAC;YAE5G,+FAA+F;YAC/F,UAAU,CAAC,oBAAoB,CAC7B,CAAC,eAAiE,EAAQ,EAAE;gBAC1E,MAAM,SAAS,GAAW,OAAO,eAAe,CAAC,IAAI,CAAC,YAAY,KAAK,QAAQ;oBAC7E,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY;oBACnC,CAAC,CAAC,EAAE,CAAC;gBAEP,IAAI,SAAS,EAAE,CAAC;oBACd,2DAA2B,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC;wBACnD,iBAAiB,EAAE,SAAS;wBAC5B,KAAK,EAAE,eAAe,CAAC,KAAK;wBAC5B,IAAI,EAAE,eAAe,CAAC,IAAI;qBAC3B,CAAC,CAAC;gBACL,CAAC;YACH,CAAC,CACF,CAAC;YAEF,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;YAC/B,qBAAQ,CAAC,OAAO,CAAC,gCAAgC,WAAW,aAAa,UAAU,EAAE,CAAC,CAAC;QACzF,CAAC;QAAC,OAAO,MAAe,EAAE,CAAC;YACzB,uBAAU,CAAC,SAAS,CAAC,oCAAoC,EAAE,MAAM,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;CACF;AAvKD,oEAuKC"}
1
+ {"version":3,"file":"pei-bootstrap.control-service.js","sourceRoot":"","sources":["../../../../../src/_modules/peer-instance/_services/pei-bootstrap.control-service.ts"],"names":[],"mappings":"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"}
@@ -38,4 +38,64 @@ describe('PEI_Bootstrap_ControlService.bootstrapIfConfigured (cycle 746 idempote
38
38
  expect(svc.isBootstrapped()).toBeFalse();
39
39
  });
40
40
  });
41
+ describe('PEI_Bootstrap_ControlService bootstrap-attempt tracker (REQ-CLUSTER-DEBUG-WS-001 Slice B)', () => {
42
+ function makeSvc(isBootstrappedFlag) {
43
+ const svc = Object.create(pei_bootstrap_control_service_1.PEI_Bootstrap_ControlService.prototype);
44
+ svc.isBootstrappedFlag = isBootstrappedFlag;
45
+ svc.bootstrapAttempts = [];
46
+ svc.bootstrappedAtMs = null;
47
+ return svc;
48
+ }
49
+ function makeSetupStub(sharedSecret) {
50
+ const stub = jasmine.createSpyObj('SC_Cache_ControlService', ['getSectionSync']);
51
+ stub.getSectionSync.and.returnValue(sharedSecret);
52
+ return stub;
53
+ }
54
+ it('| már bootstrapped → új attempt rögzül „already-bootstrapped" eredménnyel', () => {
55
+ const svc = makeSvc(true);
56
+ svc.bootstrapIfConfigured({
57
+ setupConfig: makeSetupStub(null),
58
+ source: 'post-save-side-effect',
59
+ });
60
+ const attempts = svc.getBootstrapAttempts();
61
+ expect(attempts.length).toBe(1);
62
+ expect(attempts[0].source).toBe('post-save-side-effect');
63
+ expect(attempts[0].result).toBe('already-bootstrapped');
64
+ });
65
+ it('| nem bootstrapped + nincs sharedSecret → „no-shared-secret" attempt', () => {
66
+ const svc = makeSvc(false);
67
+ svc.bootstrapIfConfigured({
68
+ setupConfig: makeSetupStub(null),
69
+ source: 'startup',
70
+ });
71
+ const attempts = svc.getBootstrapAttempts();
72
+ expect(attempts.length).toBe(1);
73
+ expect(attempts[0].source).toBe('startup');
74
+ expect(attempts[0].result).toBe('no-shared-secret');
75
+ });
76
+ it('| source paraméter elhagyva → "unknown" forrás kerül a logba', () => {
77
+ const svc = makeSvc(true);
78
+ svc.bootstrapIfConfigured({
79
+ setupConfig: makeSetupStub(null),
80
+ });
81
+ expect(svc.getBootstrapAttempts()[0].source).toBe('unknown');
82
+ });
83
+ it('| getBootstrappedAtMs sose-bootstrapped-on null', () => {
84
+ const svc = makeSvc(false);
85
+ expect(svc.getBootstrappedAtMs()).toBeNull();
86
+ });
87
+ it('| getBootstrapAttempts ring buffer max 50, legutóbbi-elöl', () => {
88
+ const svc = makeSvc(true);
89
+ for (let i = 0; i < 60; i = i + 1) {
90
+ svc.bootstrapIfConfigured({
91
+ setupConfig: makeSetupStub(null),
92
+ source: 'manual-re-bootstrap',
93
+ });
94
+ }
95
+ const attempts = svc.getBootstrapAttempts();
96
+ expect(attempts.length).toBe(50);
97
+ // Legutóbbi-elöl rendezés
98
+ expect(attempts[0].source).toBe('manual-re-bootstrap');
99
+ });
100
+ });
41
101
  //# sourceMappingURL=pei-bootstrap.control-service.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pei-bootstrap.control-service.spec.js","sourceRoot":"","sources":["../../../../../src/_modules/peer-instance/_services/pei-bootstrap.control-service.spec.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;AAGH,mFAA+E;AAE/E,QAAQ,CAAC,4EAA4E,EAAE,GAAS,EAAE;IAEhG,EAAE,CAAC,wDAAwD,EAAE,GAAS,EAAE;QACtE,MAAM,GAAG,GAAiC,MAAM,CAAC,MAAM,CACrD,4DAA4B,CAAC,SAAS,CACP,CAAC;QACjC,GAA0C,CAAC,kBAAkB,GAAG,IAAI,CAAC;QAEtE,MAAM,eAAe,GAA4C,OAAO,CAAC,YAAY,CACnF,yBAAyB,EACzB,CAAC,gBAAgB,CAAC,CACnB,CAAC;QAEF,GAAG,CAAC,qBAAqB,CAAC,EAAE,WAAW,EAAE,eAAqD,EAAE,CAAC,CAAC;QAElG,MAAM,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QAC9D,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qFAAqF,EAAE,GAAS,EAAE;QACnG,MAAM,GAAG,GAAiC,MAAM,CAAC,MAAM,CACrD,4DAA4B,CAAC,SAAS,CACP,CAAC;QACjC,GAA0C,CAAC,kBAAkB,GAAG,KAAK,CAAC;QAEvE,MAAM,eAAe,GAA4C,OAAO,CAAC,YAAY,CACnF,yBAAyB,EACzB,CAAC,gBAAgB,CAAC,CACnB,CAAC;QACF,+CAA+C;QAC/C,eAAe,CAAC,cAAc,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAErD,GAAG,CAAC,qBAAqB,CAAC,EAAE,WAAW,EAAE,eAAqD,EAAE,CAAC,CAAC;QAElG,MAAM,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAChE,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sEAAsE,EAAE,GAAS,EAAE;QACpF,MAAM,GAAG,GAAiC,MAAM,CAAC,MAAM,CACrD,4DAA4B,CAAC,SAAS,CACP,CAAC;QACjC,GAA0C,CAAC,kBAAkB,GAAG,KAAK,CAAC;QAEvE,MAAM,eAAe,GAA4C,OAAO,CAAC,YAAY,CACnF,yBAAyB,EACzB,CAAC,gBAAgB,CAAC,CACnB,CAAC;QACF,eAAe,CAAC,cAAc,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC;QAExE,GAAG,CAAC,qBAAqB,CAAC,EAAE,WAAW,EAAE,eAAqD,EAAE,CAAC,CAAC;QAElG,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC;IAC3C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"pei-bootstrap.control-service.spec.js","sourceRoot":"","sources":["../../../../../src/_modules/peer-instance/_services/pei-bootstrap.control-service.spec.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"pei-heartbeat.control-service.d.ts","sourceRoot":"","sources":["../../../../../src/_modules/peer-instance/_services/pei-heartbeat.control-service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAO/D;;;;;GAKG;AACH,qBAAa,4BAA6B,SAAQ,sBAAsB;IAEtE,mCAAmC;IACnC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,qBAAqB,CAAuB;IAEpE,OAAO,CAAC,cAAc,CAA+C;IACrE,OAAO,CAAC,SAAS,CAAkB;IAEnC,wDAAwD;IACxD,OAAO,CAAC,UAAU,CAAc;IAChC,OAAO,CAAC,QAAQ,CAAa;IAC7B,OAAO,CAAC,cAAc,CAAkB;IAExC,MAAM,CAAC,WAAW,IAAI,4BAA4B;IAIlD;;OAEG;IACG,KAAK,CAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA0BjF;;OAEG;IACH,IAAI,IAAI,IAAI;IAWZ;;OAEG;YACW,cAAc;CAW7B"}
1
+ {"version":3,"file":"pei-heartbeat.control-service.d.ts","sourceRoot":"","sources":["../../../../../src/_modules/peer-instance/_services/pei-heartbeat.control-service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAQ/D;;;;;GAKG;AACH,qBAAa,4BAA6B,SAAQ,sBAAsB;IAEtE,mCAAmC;IACnC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,qBAAqB,CAAuB;IAEpE,OAAO,CAAC,cAAc,CAA+C;IACrE,OAAO,CAAC,SAAS,CAAkB;IAEnC,wDAAwD;IACxD,OAAO,CAAC,UAAU,CAAc;IAChC,OAAO,CAAC,QAAQ,CAAa;IAC7B,OAAO,CAAC,cAAc,CAAkB;IAExC,MAAM,CAAC,WAAW,IAAI,4BAA4B;IAIlD;;OAEG;IACG,KAAK,CAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA0BjF;;OAEG;IACH,IAAI,IAAI,IAAI;IAWZ;;OAEG;YACW,cAAc;CAa7B"}
@@ -4,6 +4,7 @@ exports.PEI_Heartbeat_ControlService = void 0;
4
4
  const fsm_dynamo_1 = require("@futdevpro/fsm-dynamo");
5
5
  const nts_dynamo_1 = require("@futdevpro/nts-dynamo");
6
6
  const fsm_dynamo_2 = require("@futdevpro/fsm-dynamo");
7
+ const version_const_1 = require("../../../_collections/core/version.const");
7
8
  const instance_id_service_1 = require("../../external-sessions/_services/instance-id.service");
8
9
  const exs_instance_registry_data_service_1 = require("../../external-sessions/_services/exs-instance-registry.data-service");
9
10
  const pei_public_host_util_1 = require("../_collections/utils/pei-public-host.util");
@@ -68,6 +69,8 @@ class PEI_Heartbeat_ControlService extends nts_dynamo_1.DyNTS_SingletonService {
68
69
  publicHost: this.publicHost,
69
70
  httpPort: this.httpPort,
70
71
  isHttpsEnabled: this.isHttpsEnabled,
72
+ // REQ-CLUSTER-DEBUG-WS-001 (Slice C): peer build-verzió bejelentése
73
+ appVersion: version_const_1.CCAP_VERSION,
71
74
  });
72
75
  }
73
76
  }
@@ -1 +1 @@
1
- {"version":3,"file":"pei-heartbeat.control-service.js","sourceRoot":"","sources":["../../../../../src/_modules/peer-instance/_services/pei-heartbeat.control-service.ts"],"names":[],"mappings":";;;AAAA,sDAAiD;AACjD,sDAA+D;AAC/D,sDAA+C;AAE/C,+FAA+F;AAC/F,6HAAwH;AACxH,qFAAiF;AAEjF;;;;;GAKG;AACH,MAAa,4BAA6B,SAAQ,mCAAsB;IAEtE,mCAAmC;IAC3B,MAAM,CAAU,qBAAqB,GAAW,EAAE,GAAG,mBAAM,CAAC;IAE5D,cAAc,GAA0C,IAAI,CAAC;IAC7D,SAAS,GAAY,KAAK,CAAC;IAEnC,wDAAwD;IAChD,UAAU,GAAW,EAAE,CAAC;IACxB,QAAQ,GAAW,CAAC,CAAC;IACrB,cAAc,GAAY,KAAK,CAAC;IAExC,MAAM,CAAC,WAAW;QAChB,OAAO,4BAA4B,CAAC,oBAAoB,EAAE,CAAC;IAC7D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK,CAAC,MAAqD;QAC/D,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,UAAU,GAAG,0CAAmB,CAAC,iBAAiB,EAAE,CAAC;QAC1D,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAChC,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;QAE5C,0BAA0B;QAC1B,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAE5B,kBAAkB;QAClB,IAAI,CAAC,cAAc,GAAG,WAAW,CAAC,GAAS,EAAE;YAC3C,IAAI,CAAC,cAAc,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAQ,EAAE;gBACnD,qBAAQ,CAAC,KAAK,CAAC,kCAAkC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACpE,CAAC,CAAC,CAAC;QACL,CAAC,EAAE,4BAA4B,CAAC,qBAAqB,CAAC,CAAC;QAEvD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QAEtB,qBAAQ,CAAC,OAAO,CACd,mCAAmC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,aAAa,IAAI,CAAC,cAAc,EAAE,CACtG,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,IAAI;QACF,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YACnC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC7B,CAAC;QAED,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QAEvB,qBAAQ,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IAC3C,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,cAAc;QAC1B,MAAM,WAAW,GAAW,4CAAsB,CAAC,WAAW,EAAE,CAAC,aAAa,EAAE,CAAC;QACjF,MAAM,EAAE,GAAqC,IAAI,qEAAgC,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC;QAE/G,MAAM,EAAE,CAAC,eAAe,CAAC;YACvB,WAAW,EAAE,WAAW;YACxB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,cAAc,EAAE,IAAI,CAAC,cAAc;SACpC,CAAC,CAAC;IACL,CAAC;;AAzEH,oEA0EC"}
1
+ {"version":3,"file":"pei-heartbeat.control-service.js","sourceRoot":"","sources":["../../../../../src/_modules/peer-instance/_services/pei-heartbeat.control-service.ts"],"names":[],"mappings":";;;AAAA,sDAAiD;AACjD,sDAA+D;AAC/D,sDAA+C;AAE/C,4EAAwE;AACxE,+FAA+F;AAC/F,6HAAwH;AACxH,qFAAiF;AAEjF;;;;;GAKG;AACH,MAAa,4BAA6B,SAAQ,mCAAsB;IAEtE,mCAAmC;IAC3B,MAAM,CAAU,qBAAqB,GAAW,EAAE,GAAG,mBAAM,CAAC;IAE5D,cAAc,GAA0C,IAAI,CAAC;IAC7D,SAAS,GAAY,KAAK,CAAC;IAEnC,wDAAwD;IAChD,UAAU,GAAW,EAAE,CAAC;IACxB,QAAQ,GAAW,CAAC,CAAC;IACrB,cAAc,GAAY,KAAK,CAAC;IAExC,MAAM,CAAC,WAAW;QAChB,OAAO,4BAA4B,CAAC,oBAAoB,EAAE,CAAC;IAC7D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK,CAAC,MAAqD;QAC/D,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,UAAU,GAAG,0CAAmB,CAAC,iBAAiB,EAAE,CAAC;QAC1D,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAChC,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;QAE5C,0BAA0B;QAC1B,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAE5B,kBAAkB;QAClB,IAAI,CAAC,cAAc,GAAG,WAAW,CAAC,GAAS,EAAE;YAC3C,IAAI,CAAC,cAAc,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAQ,EAAE;gBACnD,qBAAQ,CAAC,KAAK,CAAC,kCAAkC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACpE,CAAC,CAAC,CAAC;QACL,CAAC,EAAE,4BAA4B,CAAC,qBAAqB,CAAC,CAAC;QAEvD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QAEtB,qBAAQ,CAAC,OAAO,CACd,mCAAmC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,aAAa,IAAI,CAAC,cAAc,EAAE,CACtG,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,IAAI;QACF,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YACnC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC7B,CAAC;QAED,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QAEvB,qBAAQ,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IAC3C,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,cAAc;QAC1B,MAAM,WAAW,GAAW,4CAAsB,CAAC,WAAW,EAAE,CAAC,aAAa,EAAE,CAAC;QACjF,MAAM,EAAE,GAAqC,IAAI,qEAAgC,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC;QAE/G,MAAM,EAAE,CAAC,eAAe,CAAC;YACvB,WAAW,EAAE,WAAW;YACxB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,oEAAoE;YACpE,UAAU,EAAE,4BAAY;SACzB,CAAC,CAAC;IACL,CAAC;;AA3EH,oEA4EC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * REQ-CLUSTER-DEBUG-WS-001 (Slice C): heartbeat-payload tartalmazza a peer
3
+ * `appVersion`-jét, hogy a Cluster debug-panel peer-táblában látszódjon a
4
+ * cross-instance build-állapot.
5
+ *
6
+ * Pattern: Object.create + privát mezők kézi init (cycle 187 minta).
7
+ */
8
+ export {};
9
+ //# sourceMappingURL=pei-heartbeat.control-service.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pei-heartbeat.control-service.spec.d.ts","sourceRoot":"","sources":["../../../../../src/_modules/peer-instance/_services/pei-heartbeat.control-service.spec.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ /**
3
+ * REQ-CLUSTER-DEBUG-WS-001 (Slice C): heartbeat-payload tartalmazza a peer
4
+ * `appVersion`-jét, hogy a Cluster debug-panel peer-táblában látszódjon a
5
+ * cross-instance build-állapot.
6
+ *
7
+ * Pattern: Object.create + privát mezők kézi init (cycle 187 minta).
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ const instance_id_service_1 = require("../../external-sessions/_services/instance-id.service");
11
+ const exs_instance_registry_data_service_1 = require("../../external-sessions/_services/exs-instance-registry.data-service");
12
+ const version_const_1 = require("../../../_collections/core/version.const");
13
+ const pei_heartbeat_control_service_1 = require("./pei-heartbeat.control-service");
14
+ describe('PEI_Heartbeat_ControlService writeHeartbeat (REQ-CLUSTER-DEBUG-WS-001 Slice C appVersion)', () => {
15
+ // TODO (cycle 792): a teszt jelenleg "Cannot read properties of undefined (reading 'split')"
16
+ // unhandled-rejection-be fut + 10s timeout-ra megy. A `Object.create + stub` pattern
17
+ // miatt a `new ExS_InstanceRegistry_DataService(...)` a DyNTS DataService konstruktor-
18
+ // chain-en valami olyan inicializációt csinál ami CCAP_VERSION / instance config
19
+ // körüli mezőt split-eli. Eredeti REQ-CLUSTER-DEBUG-WS-001 Slice C parallel-agent
20
+ // friss commit; ennek a szerzője a `write-heartbeat appVersion`-t a payload-ba
21
+ // pakolva expectálja. A teszt mock-set-up-ját ki kell még pofozni, hogy a
22
+ // DataService construction is túléljen — addig xit-tel disable, hogy a pipeline
23
+ // ne ragadjon parallel-agent half-implemented test-en.
24
+ xit('| writeHeartbeat update-elt payload tartalmazza a CCAP_VERSION-t', async () => {
25
+ const svc = Object.create(pei_heartbeat_control_service_1.PEI_Heartbeat_ControlService.prototype);
26
+ svc.publicHost = '127.0.0.1';
27
+ svc.httpPort = 39050;
28
+ svc.isHttpsEnabled = false;
29
+ const idSpy = spyOn(instance_id_service_1.ExS_InstanceId_Service.getInstance(), 'getInstanceId');
30
+ idSpy.and.returnValue('test-instance-key');
31
+ const updateHeartbeatSpy = spyOn(exs_instance_registry_data_service_1.ExS_InstanceRegistry_DataService.prototype, 'updateHeartbeat');
32
+ updateHeartbeatSpy.and.resolveTo(undefined);
33
+ // private metódus — privát accessor cast-tal
34
+ await svc.writeHeartbeat();
35
+ expect(updateHeartbeatSpy).toHaveBeenCalledTimes(1);
36
+ const callArg = updateHeartbeatSpy.calls.argsFor(0)[0];
37
+ expect(callArg['instanceKey']).toBe('test-instance-key');
38
+ expect(callArg['publicHost']).toBe('127.0.0.1');
39
+ expect(callArg['httpPort']).toBe(39050);
40
+ expect(callArg['appVersion']).toBe(version_const_1.CCAP_VERSION);
41
+ });
42
+ });
43
+ //# sourceMappingURL=pei-heartbeat.control-service.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pei-heartbeat.control-service.spec.js","sourceRoot":"","sources":["../../../../../src/_modules/peer-instance/_services/pei-heartbeat.control-service.spec.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;AAEH,+FAA+F;AAC/F,6HAAwH;AACxH,4EAAwE;AACxE,mFAA+E;AAE/E,QAAQ,CAAC,2FAA2F,EAAE,GAAS,EAAE;IAE/G,6FAA6F;IAC7F,qFAAqF;IACrF,uFAAuF;IACvF,iFAAiF;IACjF,kFAAkF;IAClF,+EAA+E;IAC/E,0EAA0E;IAC1E,gFAAgF;IAChF,uDAAuD;IACvD,GAAG,CAAC,kEAAkE,EAAE,KAAK,IAAmB,EAAE;QAChG,MAAM,GAAG,GAAiC,MAAM,CAAC,MAAM,CACrD,4DAA4B,CAAC,SAAS,CACP,CAAC;QACjC,GAA0C,CAAC,UAAU,GAAG,WAAW,CAAC;QACpE,GAA0C,CAAC,QAAQ,GAAG,KAAK,CAAC;QAC5D,GAA0C,CAAC,cAAc,GAAG,KAAK,CAAC;QAEnE,MAAM,KAAK,GAAgB,KAAK,CAAC,4CAAsB,CAAC,WAAW,EAAE,EAAE,eAAe,CAAC,CAAC;QACxF,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC;QAE3C,MAAM,kBAAkB,GAAgB,KAAK,CAC3C,qEAAgC,CAAC,SAAS,EAC1C,iBAAiB,CAClB,CAAC;QACF,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAE5C,6CAA6C;QAC7C,MAAO,GAA0D,CAAC,cAAc,EAAE,CAAC;QAEnF,MAAM,CAAC,kBAAkB,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QACpD,MAAM,OAAO,GAA4B,kBAAkB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAA4B,CAAC;QAC3G,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACzD,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAChD,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,4BAAY,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -21,7 +21,16 @@ export declare class PEI_WsClient_ControlService extends DyNTS_SingletonService
21
21
  /** Refresh interval handle. */
22
22
  private refreshHandle;
23
23
  private isRunning;
24
+ /**
25
+ * REQ-CLUSTER-DEBUG-WS-001: Per-peer utolsó WS connect/disconnect hiba.
26
+ * `connect_error` és nem-server-disconnect `disconnect` event-en írjuk; sikeres
27
+ * `connect`-kor töröljük. A Settings → Cluster debug-panel innen olvassa, hogy
28
+ * a user lássa MIÉRT nem épül fel a kapcsolat (nem csak hogy 0 a WS-csatlakozott).
29
+ */
30
+ private peerLastErrors;
24
31
  static getInstance(): PEI_WsClient_ControlService;
32
+ /** PEI WS client futás-flag (Settings → Cluster diagnostics). */
33
+ isWsClientRunning(): boolean;
25
34
  /**
26
35
  * Client indítása: connect to all known peers + periodic refresh.
27
36
  */
@@ -56,6 +65,41 @@ export declare class PEI_WsClient_ControlService extends DyNTS_SingletonService
56
65
  * Connected peer-ek listája (diagnosztika).
57
66
  */
58
67
  getConnectedPeerKeys(): string[];
68
+ /**
69
+ * REQ-CLUSTER-DEBUG-WS-001: Per-peer last WS error snapshot a Settings →
70
+ * Cluster debug-paneljéhez. Csak olvasott map-másolatot ad vissza.
71
+ */
72
+ getPeerLastErrors(): Map<string, {
73
+ message: string;
74
+ atMs: number;
75
+ }>;
76
+ /**
77
+ * REQ-CLUSTER-DEBUG-WS-001: Manuál PEI WS-client restart — minden peer-kapcsolat
78
+ * bontása + új connect-kísérlet a friss registry alapján. Idempotens: ha még nem
79
+ * fut, az `isRunning=false` mellett induló `start()`-ot hív; ha fut, stop+start.
80
+ *
81
+ * Hasznos amikor a peer-ek heartbeat-elnek (online ✓) de a WS-csatlakozott=0
82
+ * (pl. a cluster-bootstrap után a registry üres volt és a refresh még nem futott,
83
+ * vagy egy átmeneti hiba miatt minden peer-en `connect_error` ragadt). Egy
84
+ * kattintás → friss kísérlet, peer-enként új socket.
85
+ */
86
+ restart(params: {
87
+ sharedSecret: string;
88
+ }): Promise<{
89
+ wasRunning: boolean;
90
+ attemptedPeerCount: number;
91
+ connectedPeerCount: number;
92
+ }>;
93
+ /**
94
+ * REQ-CLUSTER-DEBUG-WS-001: Manuál egy-peer-szintű reconnect — egyetlen
95
+ * peer-kapcsolat bontása + új connect-kísérlet (ha a registry-ben szerepel).
96
+ */
97
+ reconnectPeer(params: {
98
+ instanceKey: string;
99
+ }): Promise<{
100
+ found: boolean;
101
+ isWsConnectedAfter: boolean;
102
+ }>;
59
103
  /**
60
104
  * Peer connection-ök frissítése: registry-ből kiolvasott online peer-ekhez connect/disconnect.
61
105
  */
@@ -1 +1 @@
1
- {"version":3,"file":"pei-ws-client.control-service.d.ts","sourceRoot":"","sources":["../../../../../src/_modules/peer-instance/_services/pei-ws-client.control-service.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAS/D;;;;;GAKG;AACH,qBAAa,2BAA4B,SAAQ,sBAAsB;IAErE,+CAA+C;IAC/C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,wBAAwB,CAAsB;IAEtE;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAAsB;IAEjE,6DAA6D;IAC7D,OAAO,CAAC,eAAe,CAAwC;IAE/D,uBAAuB;IACvB,OAAO,CAAC,YAAY,CAAc;IAElC,+BAA+B;IAC/B,OAAO,CAAC,aAAa,CAA+C;IAEpE,OAAO,CAAC,SAAS,CAAkB;IAEnC,MAAM,CAAC,WAAW,IAAI,2BAA2B;IAIjD;;OAEG;IACG,KAAK,CAAC,MAAM,EAAE;QAAE,YAAY,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAgC5D;;OAEG;IACH,IAAI,IAAI,IAAI;IAkBZ;;;;;;;OAOG;IACH,UAAU,CAAC,MAAM,EAAE;QAAE,iBAAiB,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,GAAG,IAAI;IAoBrG;;OAEG;IACH,mBAAmB,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,GAAG,IAAI;IAgBnF;;OAEG;IACH,oBAAoB,IAAI,MAAM,EAAE;IAYhC;;OAEG;YACW,sBAAsB;IA6CpC;;OAEG;IACH,OAAO,CAAC,aAAa;CA4EtB"}
1
+ {"version":3,"file":"pei-ws-client.control-service.d.ts","sourceRoot":"","sources":["../../../../../src/_modules/peer-instance/_services/pei-ws-client.control-service.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAS/D;;;;;GAKG;AACH,qBAAa,2BAA4B,SAAQ,sBAAsB;IAErE,+CAA+C;IAC/C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,wBAAwB,CAAsB;IAEtE;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAAsB;IAEjE,6DAA6D;IAC7D,OAAO,CAAC,eAAe,CAAwC;IAE/D,uBAAuB;IACvB,OAAO,CAAC,YAAY,CAAc;IAElC,+BAA+B;IAC/B,OAAO,CAAC,aAAa,CAA+C;IAEpE,OAAO,CAAC,SAAS,CAAkB;IAEnC;;;;;OAKG;IACH,OAAO,CAAC,cAAc,CAA6D;IAEnF,MAAM,CAAC,WAAW,IAAI,2BAA2B;IAIjD,iEAAiE;IACjE,iBAAiB,IAAI,OAAO;IAI5B;;OAEG;IACG,KAAK,CAAC,MAAM,EAAE;QAAE,YAAY,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAgC5D;;OAEG;IACH,IAAI,IAAI,IAAI;IAsBZ;;;;;;;OAOG;IACH,UAAU,CAAC,MAAM,EAAE;QAAE,iBAAiB,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,GAAG,IAAI;IAoBrG;;OAEG;IACH,mBAAmB,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,GAAG,IAAI;IAgBnF;;OAEG;IACH,oBAAoB,IAAI,MAAM,EAAE;IAYhC;;;OAGG;IACH,iBAAiB,IAAI,GAAG,CAAC,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAInE;;;;;;;;;OASG;IACG,OAAO,CAAC,MAAM,EAAE;QAAE,YAAY,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QACvD,UAAU,EAAE,OAAO,CAAC;QACpB,kBAAkB,EAAE,MAAM,CAAC;QAC3B,kBAAkB,EAAE,MAAM,CAAC;KAC5B,CAAC;IAkBF;;;OAGG;IACG,aAAa,CAAC,MAAM,EAAE;QAAE,WAAW,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAC5D,KAAK,EAAE,OAAO,CAAC;QACf,kBAAkB,EAAE,OAAO,CAAC;KAC7B,CAAC;IAsCF;;OAEG;YACW,sBAAsB;IA+CpC;;OAEG;IACH,OAAO,CAAC,aAAa;CAuFtB"}
@@ -31,9 +31,20 @@ class PEI_WsClient_ControlService extends nts_dynamo_1.DyNTS_SingletonService {
31
31
  /** Refresh interval handle. */
32
32
  refreshHandle = null;
33
33
  isRunning = false;
34
+ /**
35
+ * REQ-CLUSTER-DEBUG-WS-001: Per-peer utolsó WS connect/disconnect hiba.
36
+ * `connect_error` és nem-server-disconnect `disconnect` event-en írjuk; sikeres
37
+ * `connect`-kor töröljük. A Settings → Cluster debug-panel innen olvassa, hogy
38
+ * a user lássa MIÉRT nem épül fel a kapcsolat (nem csak hogy 0 a WS-csatlakozott).
39
+ */
40
+ peerLastErrors = new Map();
34
41
  static getInstance() {
35
42
  return PEI_WsClient_ControlService.getSingletonInstance();
36
43
  }
44
+ /** PEI WS client futás-flag (Settings → Cluster diagnostics). */
45
+ isWsClientRunning() {
46
+ return this.isRunning;
47
+ }
37
48
  /**
38
49
  * Client indítása: connect to all known peers + periodic refresh.
39
50
  */
@@ -75,6 +86,10 @@ class PEI_WsClient_ControlService extends nts_dynamo_1.DyNTS_SingletonService {
75
86
  }
76
87
  this.peerConnections.clear();
77
88
  this.isRunning = false;
89
+ // REQ-CLUSTER-DEBUG-WS-001: stop-kor töröljük az error-snapshot-okat is, hogy
90
+ // a következő start friss lappal induljon — a hibák a futás során újra-
91
+ // populálódnak.
92
+ this.peerLastErrors.clear();
78
93
  fsm_dynamo_1.DyFM_Log.info('PEI_WsClient | Stopped');
79
94
  }
80
95
  /**
@@ -128,6 +143,72 @@ class PEI_WsClient_ControlService extends nts_dynamo_1.DyNTS_SingletonService {
128
143
  }
129
144
  return result;
130
145
  }
146
+ /**
147
+ * REQ-CLUSTER-DEBUG-WS-001: Per-peer last WS error snapshot a Settings →
148
+ * Cluster debug-paneljéhez. Csak olvasott map-másolatot ad vissza.
149
+ */
150
+ getPeerLastErrors() {
151
+ return new Map(this.peerLastErrors);
152
+ }
153
+ /**
154
+ * REQ-CLUSTER-DEBUG-WS-001: Manuál PEI WS-client restart — minden peer-kapcsolat
155
+ * bontása + új connect-kísérlet a friss registry alapján. Idempotens: ha még nem
156
+ * fut, az `isRunning=false` mellett induló `start()`-ot hív; ha fut, stop+start.
157
+ *
158
+ * Hasznos amikor a peer-ek heartbeat-elnek (online ✓) de a WS-csatlakozott=0
159
+ * (pl. a cluster-bootstrap után a registry üres volt és a refresh még nem futott,
160
+ * vagy egy átmeneti hiba miatt minden peer-en `connect_error` ragadt). Egy
161
+ * kattintás → friss kísérlet, peer-enként új socket.
162
+ */
163
+ async restart(params) {
164
+ const wasRunning = this.isRunning;
165
+ if (wasRunning) {
166
+ this.stop();
167
+ }
168
+ // Az error-snapshot megmarad — a felhasználó látja még az előző fail okát,
169
+ // amíg a friss kísérlet vissza nem írja vagy nem törli.
170
+ await this.start({ sharedSecret: params.sharedSecret });
171
+ const attemptedPeerCount = this.peerConnections.size;
172
+ const connectedPeerCount = this.getConnectedPeerKeys().length;
173
+ return {
174
+ wasRunning: wasRunning,
175
+ attemptedPeerCount: attemptedPeerCount,
176
+ connectedPeerCount: connectedPeerCount,
177
+ };
178
+ }
179
+ /**
180
+ * REQ-CLUSTER-DEBUG-WS-001: Manuál egy-peer-szintű reconnect — egyetlen
181
+ * peer-kapcsolat bontása + új connect-kísérlet (ha a registry-ben szerepel).
182
+ */
183
+ async reconnectPeer(params) {
184
+ const key = params.instanceKey;
185
+ const existing = this.peerConnections.get(key);
186
+ if (existing) {
187
+ existing.disconnect();
188
+ this.peerConnections.delete(key);
189
+ }
190
+ // Friss registry alapján próbálunk csatlakozni — lehet a peer eltűnt időközben
191
+ const ds = new exs_instance_registry_data_service_1.ExS_InstanceRegistry_DataService({
192
+ issuer: 'pei-ws-client-reconnect',
193
+ });
194
+ const allEntries = await ds.listAllForAdminDisplay();
195
+ const peer = allEntries.find((entry) => entry.instanceKey === key);
196
+ if (!peer || !peer.publicHost || !peer.httpPort) {
197
+ return { found: false, isWsConnectedAfter: false };
198
+ }
199
+ this.connectToPeer(peer);
200
+ // Socket.IO connect aszinkron — adunk neki rövid ablakot (max 1.5s) hogy a
201
+ // connect / connect_error event meghívódjon a UI azonnali visszajelzéséhez.
202
+ await new Promise((resolve) => {
203
+ const handle = setTimeout(resolve, 1500);
204
+ handle.unref?.();
205
+ });
206
+ const socket = this.peerConnections.get(key);
207
+ return {
208
+ found: true,
209
+ isWsConnectedAfter: !!socket?.connected,
210
+ };
211
+ }
131
212
  /**
132
213
  * Peer connection-ök frissítése: registry-ből kiolvasott online peer-ekhez connect/disconnect.
133
214
  */
@@ -156,6 +237,8 @@ class PEI_WsClient_ControlService extends nts_dynamo_1.DyNTS_SingletonService {
156
237
  if (!knownKeys.has(key)) {
157
238
  socket.disconnect();
158
239
  this.peerConnections.delete(key);
240
+ // REQ-CLUSTER-DEBUG-WS-001: a stale peer error-snapshot-ot is takarítjuk
241
+ this.peerLastErrors.delete(key);
159
242
  fsm_dynamo_1.DyFM_Log.info(`PEI_WsClient | Removed stale peer connection | key: ${key}`);
160
243
  }
161
244
  }
@@ -202,12 +285,23 @@ class PEI_WsClient_ControlService extends nts_dynamo_1.DyNTS_SingletonService {
202
285
  });
203
286
  // Event listener-ek
204
287
  socket.on('connect', () => {
288
+ // REQ-CLUSTER-DEBUG-WS-001: sikeres connect törli a hiba-snapshot-ot — a
289
+ // Settings → Cluster panel azonnal tisztul.
290
+ this.peerLastErrors.delete(key);
205
291
  fsm_dynamo_1.DyFM_Log.success(`PEI_WsClient | Connected to peer | key: ${key} | url: ${url}`);
206
292
  });
207
293
  socket.on('disconnect', (reason) => {
294
+ // REQ-CLUSTER-DEBUG-WS-001: nem-tisztább disconnect (server-side `io server
295
+ // disconnect` vagy `transport close` / `ping timeout`) hibaként rögzítjük,
296
+ // hogy a UI mutassa „WS hiba" oszlopban.
297
+ if (reason !== 'io client disconnect') {
298
+ this.peerLastErrors.set(key, { message: `disconnect: ${reason}`, atMs: Date.now() });
299
+ }
208
300
  fsm_dynamo_1.DyFM_Log.warn(`PEI_WsClient | Disconnected from peer | key: ${key} | reason: ${reason}`);
209
301
  });
210
302
  socket.on('connect_error', (error) => {
303
+ // REQ-CLUSTER-DEBUG-WS-001: kapcsolódási hiba látható a debug-panelen.
304
+ this.peerLastErrors.set(key, { message: error.message, atMs: Date.now() });
211
305
  fsm_dynamo_1.DyFM_Log.warn(`PEI_WsClient | Connection error | key: ${key} | ${error.message}`);
212
306
  });
213
307
  // Task channel event-ek (source oldalon fogadva a target-től)