@futdevpro/ccap 1.1.2869 → 1.1.2881
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/client-dist/{agent-instances.module-3LXXHDID.js → agent-instances.module-U742BGNW.js} +2 -2
- package/client-dist/{ca.module-MYYCM2JJ.js → ca.module-WANXRIO7.js} +2 -2
- package/client-dist/cc-usage-dashboard.component-TPMSJIGI.js +2 -0
- package/client-dist/cc-usage-dashboard.component-TPMSJIGI.js.map +7 -0
- package/client-dist/{cc.module-S6E7DTHJ.js → cc.module-JZUXUXHP.js} +2 -2
- package/client-dist/{chunk-ISWTCW7W.js → chunk-26DXMUXV.js} +2 -2
- package/client-dist/{chunk-KB7B22JR.js → chunk-2LJT2APC.js} +2 -2
- package/client-dist/{chunk-RIVVMZSH.js → chunk-435IBC6L.js} +2 -2
- package/client-dist/{chunk-Z5SR576N.js → chunk-467OMXRK.js} +2 -2
- package/client-dist/{chunk-6XORNZET.js → chunk-46N7EC7U.js} +2 -2
- package/client-dist/{chunk-YIQBC2QJ.js → chunk-4OKUKX55.js} +2 -2
- package/client-dist/{chunk-5LSG6VTE.js → chunk-4RRBZXYU.js} +2 -2
- package/client-dist/{chunk-3LN5752S.js → chunk-4TBE5I3U.js} +2 -2
- package/client-dist/{chunk-TKCU7CDK.js → chunk-6A2IM2XR.js} +2 -2
- package/client-dist/{chunk-JWWJ6DPT.js → chunk-6BQHKSUP.js} +2 -2
- package/client-dist/{chunk-OWAXNU7Q.js → chunk-6IYFOHCN.js} +2 -2
- package/client-dist/{chunk-OU3F7ZJU.js → chunk-6NWEJXDU.js} +2 -2
- package/client-dist/{chunk-OUIQTJDB.js → chunk-767Z7I55.js} +2 -2
- package/client-dist/{chunk-JNIJEGC3.js → chunk-AS2SYIJB.js} +2 -2
- package/client-dist/{chunk-VIFXYYPK.js → chunk-BHWHGLKC.js} +2 -2
- package/client-dist/{chunk-ZVHVFEBL.js → chunk-CILMMQ5V.js} +2 -2
- package/client-dist/{chunk-JRG7FXDC.js → chunk-CSHUFD2L.js} +2 -2
- package/client-dist/{chunk-KK4QAETW.js → chunk-DNHL6M7F.js} +2 -2
- package/client-dist/{chunk-5AKIWMP2.js → chunk-DUN255KX.js} +2 -2
- package/client-dist/{chunk-YOSTW7HD.js → chunk-EBSMIZTK.js} +2 -2
- package/client-dist/{chunk-TYQN5TDD.js → chunk-EY32IBWM.js} +2 -2
- package/client-dist/{chunk-TOGFLAZ7.js → chunk-FJGBPKHK.js} +2 -2
- package/client-dist/{chunk-TEY575GB.js → chunk-GDAL4G4Y.js} +2 -2
- package/client-dist/{chunk-2BU3PEIR.js → chunk-GR3CXOIX.js} +2 -2
- package/client-dist/{chunk-7WZCSUSH.js → chunk-HDCFO7OE.js} +2 -2
- package/client-dist/{chunk-2PDIEP7E.js → chunk-HFVIX2ZG.js} +2 -2
- package/client-dist/{chunk-APKFZ3NB.js → chunk-HPBX6VCV.js} +2 -2
- package/client-dist/{chunk-GQFCMJB7.js → chunk-IR4THKPA.js} +2 -2
- package/client-dist/{chunk-OX65HIMB.js → chunk-J5NYZUBP.js} +2 -2
- package/client-dist/{chunk-76SBSCFD.js → chunk-JDK64BE7.js} +2 -2
- package/client-dist/{chunk-YDSE5YMB.js → chunk-KMEGS6BP.js} +2 -2
- package/client-dist/{chunk-XNIVMROA.js → chunk-KQLKM7RB.js} +2 -2
- package/client-dist/{chunk-FQGSNRKX.js → chunk-LERWAULE.js} +2 -2
- package/client-dist/{chunk-NNKE5Y76.js → chunk-M3RL34GF.js} +2 -2
- package/client-dist/{chunk-HBQZEBLB.js → chunk-NJPSU6MN.js} +2 -2
- package/client-dist/{chunk-N7DN2GHR.js → chunk-ONEB5UF5.js} +2 -2
- package/client-dist/{chunk-ETSUU22G.js → chunk-OP2PE3KG.js} +2 -2
- package/client-dist/{chunk-ETSUU22G.js.map → chunk-OP2PE3KG.js.map} +1 -1
- package/client-dist/{chunk-R7R6POCN.js → chunk-OZGFJXOA.js} +2 -2
- package/client-dist/{chunk-DM757UXT.js → chunk-PPRG7F5A.js} +2 -2
- package/client-dist/{chunk-AP4ZGZ3Q.js → chunk-PQUBI6TC.js} +2 -2
- package/client-dist/{chunk-W3R2EMPM.js → chunk-Q6JQHJME.js} +2 -2
- package/client-dist/{chunk-QGWYDTS3.js → chunk-QDTY7SR6.js} +2 -2
- package/client-dist/{chunk-JLHB4EGI.js → chunk-RQ2HFT2L.js} +2 -2
- package/client-dist/{chunk-YZEV52S3.js → chunk-RRN36VPR.js} +2 -2
- package/client-dist/{chunk-NID5T5OA.js → chunk-S4GJTHYZ.js} +2 -2
- package/client-dist/{chunk-6UO45CXV.js → chunk-SKHAAE4A.js} +2 -2
- package/client-dist/{chunk-GB63TGH2.js → chunk-TSPROG7P.js} +2 -2
- package/client-dist/{chunk-2V7JR7SO.js → chunk-U7ZBDYGU.js} +2 -2
- package/client-dist/{chunk-WJHZKMS6.js → chunk-VQWGWQDA.js} +2 -2
- package/client-dist/{chunk-GPNYGY72.js → chunk-X7HHJQ2O.js} +2 -2
- package/client-dist/{chunk-6RS5GTKC.js → chunk-XH3SQ4UP.js} +2 -2
- package/client-dist/{chunk-SC7L2BUT.js → chunk-XHF463TC.js} +2 -2
- package/client-dist/{chunk-35NYQ66T.js → chunk-XJEATRA4.js} +2 -2
- package/client-dist/{chunk-2J4JC47Y.js → chunk-XSXQC64X.js} +2 -2
- package/client-dist/{chunk-5ZIYBSP7.js → chunk-YE57GLWU.js} +2 -2
- package/client-dist/{chunk-TTIUP6WD.js → chunk-YX6NZTP7.js} +2 -2
- package/client-dist/{consultant.module-OKAHHHIM.js → consultant.module-WL4WEIIF.js} +2 -2
- package/client-dist/{crd.module-G6Z36XAU.js → crd.module-OE3ML5C7.js} +2 -2
- package/client-dist/{dashboard.module-6RDWDPLM.js → dashboard.module-NBINBB72.js} +2 -2
- package/client-dist/{do.module-REZMQY2N.js → do.module-BLTXJC4T.js} +2 -2
- package/client-dist/{document-library.module-HNEY63TN.js → document-library.module-TXGZT2VZ.js} +2 -2
- package/client-dist/{embedding-eval.module-5T6NKDKA.js → embedding-eval.module-PYE5NL5R.js} +2 -2
- package/client-dist/{embedding-registry.module-CMPQ7NS2.js → embedding-registry.module-46PAOMQR.js} +2 -2
- package/client-dist/{err.module-CVZWIOMI.js → err.module-B743IN5O.js} +2 -2
- package/client-dist/{feedback.module-CRCF4W25.js → feedback.module-H4YSPDLF.js} +2 -2
- package/client-dist/{host-runtime-mcp.module-7ODIDC5L.js → host-runtime-mcp.module-6SK6OZH7.js} +2 -2
- package/client-dist/index.html +2 -2
- package/client-dist/{live-dev-pipeline.module-V26BMG6N.js → live-dev-pipeline.module-MCPAY2LG.js} +2 -2
- package/client-dist/{logs.module-PLE5ABP6.js → logs.module-CJF7RLV7.js} +2 -2
- package/client-dist/{main-EBGS6D7B.js → main-NZFBSJOQ.js} +3 -3
- package/client-dist/{master-control-remote-poc.module-ZB5IS3LQ.js → master-control-remote-poc.module-LJ5ANCQ6.js} +2 -2
- package/client-dist/{mobile-app.module-5UZRMRJ6.js → mobile-app.module-G7LAAOOP.js} +2 -2
- package/client-dist/{model-registry.module-IWCKDRUO.js → model-registry.module-WDAX2AHY.js} +2 -2
- package/client-dist/{oc.module-44GVU6IT.js → oc.module-T43BN7CJ.js} +2 -2
- package/client-dist/{orc.module-QG7H5CON.js → orc.module-R3P5Y4YW.js} +2 -2
- package/client-dist/{project-management.module-6K7Q55KX.js → project-management.module-ODMCGFYI.js} +2 -2
- package/client-dist/project-source-routed.module-M22ABRHR.js +2 -0
- package/client-dist/{scheduler.module-WIEM3UPU.js → scheduler.module-TZLVYYMO.js} +2 -2
- package/client-dist/{session.module-FMEFK7VS.js → session.module-3XGXYP4K.js} +2 -2
- package/client-dist/{set.module-2ACVRQVB.js → set.module-M3PJXM3W.js} +5 -5
- package/client-dist/{set.module-2ACVRQVB.js.map → set.module-M3PJXM3W.js.map} +3 -3
- package/client-dist/{setup.module-C6ICVZKP.js → setup.module-2U3R4YDE.js} +2 -2
- package/client-dist/styles-OJOSC7GL.css +2 -0
- package/client-dist/styles-OJOSC7GL.css.map +7 -0
- package/client-dist/{terminals.module-F5BMBKBP.js → terminals.module-ULIXEKUD.js} +2 -2
- package/client-dist/{voice-notes-poc.module-SXROQC4L.js → voice-notes-poc.module-GZGIIFPR.js} +2 -2
- package/client-dist/{wfs.module-IFEXPLHA.js → wfs.module-6B4QN7NS.js} +2 -2
- package/package.json +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/account/cc-account-usage-probe.util.d.ts +85 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/account/cc-account-usage-probe.util.d.ts.map +1 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/account/cc-account-usage-probe.util.js +264 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/account/cc-account-usage-probe.util.js.map +1 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_routes/cc-account/cc-account-route.control-service.d.ts +18 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_routes/cc-account/cc-account-route.control-service.d.ts.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_routes/cc-account/cc-account-route.control-service.js +93 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_routes/cc-account/cc-account-route.control-service.js.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_routes/cc-account/cc-account.controller.d.ts.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_routes/cc-account/cc-account.controller.js +14 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_routes/cc-account/cc-account.controller.js.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/account/cc-account-pool.control-service.d.ts +36 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/account/cc-account-pool.control-service.d.ts.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/account/cc-account-pool.control-service.js +136 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/account/cc-account-pool.control-service.js.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/account/cc-account.data-service.d.ts +11 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/account/cc-account.data-service.d.ts.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/account/cc-account.data-service.js +40 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/account/cc-account.data-service.js.map +1 -1
- package/server/build/src/_modules/external-sessions/_services/exs-instance-presence.service.d.ts +4 -4
- package/server/build/src/_modules/external-sessions/_services/exs-instance-presence.service.d.ts.map +1 -1
- package/server/build/src/_modules/external-sessions/_services/exs-instance-presence.service.js +12 -7
- package/server/build/src/_modules/external-sessions/_services/exs-instance-presence.service.js.map +1 -1
- package/server/build/src/_modules/external-sessions/_services/exs-instance-presence.service.spec.js +17 -14
- package/server/build/src/_modules/external-sessions/_services/exs-instance-presence.service.spec.js.map +1 -1
- package/server/build/src/_modules/external-sessions/_services/exs-instance-registry.data-service.d.ts +6 -2
- package/server/build/src/_modules/external-sessions/_services/exs-instance-registry.data-service.d.ts.map +1 -1
- package/server/build/src/_modules/external-sessions/_services/exs-instance-registry.data-service.js +8 -4
- package/server/build/src/_modules/external-sessions/_services/exs-instance-registry.data-service.js.map +1 -1
- package/server/build/src/_modules/peer-instance/_models/interfaces/pei-heartbeat-status.interface.d.ts +23 -0
- package/server/build/src/_modules/peer-instance/_models/interfaces/pei-heartbeat-status.interface.d.ts.map +1 -0
- package/server/build/src/_modules/peer-instance/_models/interfaces/pei-heartbeat-status.interface.js +3 -0
- package/server/build/src/_modules/peer-instance/_models/interfaces/pei-heartbeat-status.interface.js.map +1 -0
- package/server/build/src/_modules/peer-instance/_services/pei-heartbeat-self-healing.spec.d.ts +10 -0
- package/server/build/src/_modules/peer-instance/_services/pei-heartbeat-self-healing.spec.d.ts.map +1 -0
- package/server/build/src/_modules/peer-instance/_services/pei-heartbeat-self-healing.spec.js +81 -0
- package/server/build/src/_modules/peer-instance/_services/pei-heartbeat-self-healing.spec.js.map +1 -0
- package/server/build/src/_modules/peer-instance/_services/pei-heartbeat.control-service.d.ts +49 -2
- package/server/build/src/_modules/peer-instance/_services/pei-heartbeat.control-service.d.ts.map +1 -1
- package/server/build/src/_modules/peer-instance/_services/pei-heartbeat.control-service.js +107 -6
- package/server/build/src/_modules/peer-instance/_services/pei-heartbeat.control-service.js.map +1 -1
- package/server/build/src/_modules/peer-instance/_services/pei-ws-client-active-reconnect.spec.d.ts +8 -0
- package/server/build/src/_modules/peer-instance/_services/pei-ws-client-active-reconnect.spec.d.ts.map +1 -0
- package/server/build/src/_modules/peer-instance/_services/pei-ws-client-active-reconnect.spec.js +112 -0
- package/server/build/src/_modules/peer-instance/_services/pei-ws-client-active-reconnect.spec.js.map +1 -0
- package/server/build/src/_modules/peer-instance/_services/pei-ws-client.control-service.d.ts +26 -1
- package/server/build/src/_modules/peer-instance/_services/pei-ws-client.control-service.d.ts.map +1 -1
- package/server/build/src/_modules/peer-instance/_services/pei-ws-client.control-service.js +60 -7
- package/server/build/src/_modules/peer-instance/_services/pei-ws-client.control-service.js.map +1 -1
- package/server/build/src/_modules/setup-config/_models/interfaces/cluster/sc-cluster-diagnostics-result.interface.d.ts +8 -0
- package/server/build/src/_modules/setup-config/_models/interfaces/cluster/sc-cluster-diagnostics-result.interface.d.ts.map +1 -1
- package/server/build/src/_modules/setup-config/_services/control-services/sc-cluster.control-service.d.ts.map +1 -1
- package/server/build/src/_modules/setup-config/_services/control-services/sc-cluster.control-service.js +8 -2
- package/server/build/src/_modules/setup-config/_services/control-services/sc-cluster.control-service.js.map +1 -1
- package/client-dist/cc-usage-dashboard.component-BZERJBJ7.js +0 -2
- package/client-dist/cc-usage-dashboard.component-BZERJBJ7.js.map +0 -7
- package/client-dist/project-source-routed.module-72C4RPOH.js +0 -2
- package/client-dist/styles-WS3OIV37.css +0 -2
- package/client-dist/styles-WS3OIV37.css.map +0 -7
- /package/client-dist/{agent-instances.module-3LXXHDID.js.map → agent-instances.module-U742BGNW.js.map} +0 -0
- /package/client-dist/{ca.module-MYYCM2JJ.js.map → ca.module-WANXRIO7.js.map} +0 -0
- /package/client-dist/{cc.module-S6E7DTHJ.js.map → cc.module-JZUXUXHP.js.map} +0 -0
- /package/client-dist/{chunk-ISWTCW7W.js.map → chunk-26DXMUXV.js.map} +0 -0
- /package/client-dist/{chunk-KB7B22JR.js.map → chunk-2LJT2APC.js.map} +0 -0
- /package/client-dist/{chunk-RIVVMZSH.js.map → chunk-435IBC6L.js.map} +0 -0
- /package/client-dist/{chunk-Z5SR576N.js.map → chunk-467OMXRK.js.map} +0 -0
- /package/client-dist/{chunk-6XORNZET.js.map → chunk-46N7EC7U.js.map} +0 -0
- /package/client-dist/{chunk-YIQBC2QJ.js.map → chunk-4OKUKX55.js.map} +0 -0
- /package/client-dist/{chunk-5LSG6VTE.js.map → chunk-4RRBZXYU.js.map} +0 -0
- /package/client-dist/{chunk-3LN5752S.js.map → chunk-4TBE5I3U.js.map} +0 -0
- /package/client-dist/{chunk-TKCU7CDK.js.map → chunk-6A2IM2XR.js.map} +0 -0
- /package/client-dist/{chunk-JWWJ6DPT.js.map → chunk-6BQHKSUP.js.map} +0 -0
- /package/client-dist/{chunk-OWAXNU7Q.js.map → chunk-6IYFOHCN.js.map} +0 -0
- /package/client-dist/{chunk-OU3F7ZJU.js.map → chunk-6NWEJXDU.js.map} +0 -0
- /package/client-dist/{chunk-OUIQTJDB.js.map → chunk-767Z7I55.js.map} +0 -0
- /package/client-dist/{chunk-JNIJEGC3.js.map → chunk-AS2SYIJB.js.map} +0 -0
- /package/client-dist/{chunk-VIFXYYPK.js.map → chunk-BHWHGLKC.js.map} +0 -0
- /package/client-dist/{chunk-ZVHVFEBL.js.map → chunk-CILMMQ5V.js.map} +0 -0
- /package/client-dist/{chunk-JRG7FXDC.js.map → chunk-CSHUFD2L.js.map} +0 -0
- /package/client-dist/{chunk-KK4QAETW.js.map → chunk-DNHL6M7F.js.map} +0 -0
- /package/client-dist/{chunk-5AKIWMP2.js.map → chunk-DUN255KX.js.map} +0 -0
- /package/client-dist/{chunk-YOSTW7HD.js.map → chunk-EBSMIZTK.js.map} +0 -0
- /package/client-dist/{chunk-TYQN5TDD.js.map → chunk-EY32IBWM.js.map} +0 -0
- /package/client-dist/{chunk-TOGFLAZ7.js.map → chunk-FJGBPKHK.js.map} +0 -0
- /package/client-dist/{chunk-TEY575GB.js.map → chunk-GDAL4G4Y.js.map} +0 -0
- /package/client-dist/{chunk-2BU3PEIR.js.map → chunk-GR3CXOIX.js.map} +0 -0
- /package/client-dist/{chunk-7WZCSUSH.js.map → chunk-HDCFO7OE.js.map} +0 -0
- /package/client-dist/{chunk-2PDIEP7E.js.map → chunk-HFVIX2ZG.js.map} +0 -0
- /package/client-dist/{chunk-APKFZ3NB.js.map → chunk-HPBX6VCV.js.map} +0 -0
- /package/client-dist/{chunk-GQFCMJB7.js.map → chunk-IR4THKPA.js.map} +0 -0
- /package/client-dist/{chunk-OX65HIMB.js.map → chunk-J5NYZUBP.js.map} +0 -0
- /package/client-dist/{chunk-76SBSCFD.js.map → chunk-JDK64BE7.js.map} +0 -0
- /package/client-dist/{chunk-YDSE5YMB.js.map → chunk-KMEGS6BP.js.map} +0 -0
- /package/client-dist/{chunk-XNIVMROA.js.map → chunk-KQLKM7RB.js.map} +0 -0
- /package/client-dist/{chunk-FQGSNRKX.js.map → chunk-LERWAULE.js.map} +0 -0
- /package/client-dist/{chunk-NNKE5Y76.js.map → chunk-M3RL34GF.js.map} +0 -0
- /package/client-dist/{chunk-HBQZEBLB.js.map → chunk-NJPSU6MN.js.map} +0 -0
- /package/client-dist/{chunk-N7DN2GHR.js.map → chunk-ONEB5UF5.js.map} +0 -0
- /package/client-dist/{chunk-R7R6POCN.js.map → chunk-OZGFJXOA.js.map} +0 -0
- /package/client-dist/{chunk-DM757UXT.js.map → chunk-PPRG7F5A.js.map} +0 -0
- /package/client-dist/{chunk-AP4ZGZ3Q.js.map → chunk-PQUBI6TC.js.map} +0 -0
- /package/client-dist/{chunk-W3R2EMPM.js.map → chunk-Q6JQHJME.js.map} +0 -0
- /package/client-dist/{chunk-QGWYDTS3.js.map → chunk-QDTY7SR6.js.map} +0 -0
- /package/client-dist/{chunk-JLHB4EGI.js.map → chunk-RQ2HFT2L.js.map} +0 -0
- /package/client-dist/{chunk-YZEV52S3.js.map → chunk-RRN36VPR.js.map} +0 -0
- /package/client-dist/{chunk-NID5T5OA.js.map → chunk-S4GJTHYZ.js.map} +0 -0
- /package/client-dist/{chunk-6UO45CXV.js.map → chunk-SKHAAE4A.js.map} +0 -0
- /package/client-dist/{chunk-GB63TGH2.js.map → chunk-TSPROG7P.js.map} +0 -0
- /package/client-dist/{chunk-2V7JR7SO.js.map → chunk-U7ZBDYGU.js.map} +0 -0
- /package/client-dist/{chunk-WJHZKMS6.js.map → chunk-VQWGWQDA.js.map} +0 -0
- /package/client-dist/{chunk-GPNYGY72.js.map → chunk-X7HHJQ2O.js.map} +0 -0
- /package/client-dist/{chunk-6RS5GTKC.js.map → chunk-XH3SQ4UP.js.map} +0 -0
- /package/client-dist/{chunk-SC7L2BUT.js.map → chunk-XHF463TC.js.map} +0 -0
- /package/client-dist/{chunk-35NYQ66T.js.map → chunk-XJEATRA4.js.map} +0 -0
- /package/client-dist/{chunk-2J4JC47Y.js.map → chunk-XSXQC64X.js.map} +0 -0
- /package/client-dist/{chunk-5ZIYBSP7.js.map → chunk-YE57GLWU.js.map} +0 -0
- /package/client-dist/{chunk-TTIUP6WD.js.map → chunk-YX6NZTP7.js.map} +0 -0
- /package/client-dist/{consultant.module-OKAHHHIM.js.map → consultant.module-WL4WEIIF.js.map} +0 -0
- /package/client-dist/{crd.module-G6Z36XAU.js.map → crd.module-OE3ML5C7.js.map} +0 -0
- /package/client-dist/{dashboard.module-6RDWDPLM.js.map → dashboard.module-NBINBB72.js.map} +0 -0
- /package/client-dist/{do.module-REZMQY2N.js.map → do.module-BLTXJC4T.js.map} +0 -0
- /package/client-dist/{document-library.module-HNEY63TN.js.map → document-library.module-TXGZT2VZ.js.map} +0 -0
- /package/client-dist/{embedding-eval.module-5T6NKDKA.js.map → embedding-eval.module-PYE5NL5R.js.map} +0 -0
- /package/client-dist/{embedding-registry.module-CMPQ7NS2.js.map → embedding-registry.module-46PAOMQR.js.map} +0 -0
- /package/client-dist/{err.module-CVZWIOMI.js.map → err.module-B743IN5O.js.map} +0 -0
- /package/client-dist/{feedback.module-CRCF4W25.js.map → feedback.module-H4YSPDLF.js.map} +0 -0
- /package/client-dist/{host-runtime-mcp.module-7ODIDC5L.js.map → host-runtime-mcp.module-6SK6OZH7.js.map} +0 -0
- /package/client-dist/{live-dev-pipeline.module-V26BMG6N.js.map → live-dev-pipeline.module-MCPAY2LG.js.map} +0 -0
- /package/client-dist/{logs.module-PLE5ABP6.js.map → logs.module-CJF7RLV7.js.map} +0 -0
- /package/client-dist/{main-EBGS6D7B.js.map → main-NZFBSJOQ.js.map} +0 -0
- /package/client-dist/{master-control-remote-poc.module-ZB5IS3LQ.js.map → master-control-remote-poc.module-LJ5ANCQ6.js.map} +0 -0
- /package/client-dist/{mobile-app.module-5UZRMRJ6.js.map → mobile-app.module-G7LAAOOP.js.map} +0 -0
- /package/client-dist/{model-registry.module-IWCKDRUO.js.map → model-registry.module-WDAX2AHY.js.map} +0 -0
- /package/client-dist/{oc.module-44GVU6IT.js.map → oc.module-T43BN7CJ.js.map} +0 -0
- /package/client-dist/{orc.module-QG7H5CON.js.map → orc.module-R3P5Y4YW.js.map} +0 -0
- /package/client-dist/{project-management.module-6K7Q55KX.js.map → project-management.module-ODMCGFYI.js.map} +0 -0
- /package/client-dist/{project-source-routed.module-72C4RPOH.js.map → project-source-routed.module-M22ABRHR.js.map} +0 -0
- /package/client-dist/{scheduler.module-WIEM3UPU.js.map → scheduler.module-TZLVYYMO.js.map} +0 -0
- /package/client-dist/{session.module-FMEFK7VS.js.map → session.module-3XGXYP4K.js.map} +0 -0
- /package/client-dist/{setup.module-C6ICVZKP.js.map → setup.module-2U3R4YDE.js.map} +0 -0
- /package/client-dist/{terminals.module-F5BMBKBP.js.map → terminals.module-ULIXEKUD.js.map} +0 -0
- /package/client-dist/{voice-notes-poc.module-SXROQC4L.js.map → voice-notes-poc.module-GZGIIFPR.js.map} +0 -0
- /package/client-dist/{wfs.module-IFEXPLHA.js.map → wfs.module-6B4QN7NS.js.map} +0 -0
package/server/build/src/_modules/external-sessions/_services/exs-instance-presence.service.spec.js
CHANGED
|
@@ -49,8 +49,10 @@ describe('ExS_InstancePresence_Service.buildPresenceInfo', () => {
|
|
|
49
49
|
expect(r.presence).toBe(exs_instance_presence_enum_1.EXS_InstancePresence_Type.online);
|
|
50
50
|
expect(r.lastHeartbeatAt).toBe(heartbeat.toISOString());
|
|
51
51
|
});
|
|
52
|
-
it('heartbeat
|
|
53
|
-
|
|
52
|
+
it('heartbeat 90s old + WS not connected → degraded (60-180s window)', () => {
|
|
53
|
+
// REQ-CLUSTER-DEBUG-WS-001 Slice E4 (cycle 820): a degraded ablak 30-90s-ről
|
|
54
|
+
// 60-180s-re tágult (1 elveszett heartbeat-ciklus tűréshatár).
|
|
55
|
+
const heartbeat = new Date(fixedNow.getTime() - 90_000);
|
|
54
56
|
const r = exs_instance_presence_service_1.ExS_InstancePresence_Service.buildPresenceInfo({
|
|
55
57
|
instanceKey: 'k1',
|
|
56
58
|
entry: makeEntry({ lastHeartbeatAt: heartbeat }),
|
|
@@ -58,10 +60,10 @@ describe('ExS_InstancePresence_Service.buildPresenceInfo', () => {
|
|
|
58
60
|
wsConnected: false,
|
|
59
61
|
});
|
|
60
62
|
expect(r.presence).toBe(exs_instance_presence_enum_1.EXS_InstancePresence_Type.degraded);
|
|
61
|
-
expect(r.reason).toContain('
|
|
63
|
+
expect(r.reason).toContain('90s');
|
|
62
64
|
});
|
|
63
|
-
it('heartbeat
|
|
64
|
-
const heartbeat = new Date(fixedNow.getTime() -
|
|
65
|
+
it('heartbeat 300s old + WS not connected → offline (> 180s threshold)', () => {
|
|
66
|
+
const heartbeat = new Date(fixedNow.getTime() - 300_000);
|
|
65
67
|
const r = exs_instance_presence_service_1.ExS_InstancePresence_Service.buildPresenceInfo({
|
|
66
68
|
instanceKey: 'k1',
|
|
67
69
|
entry: makeEntry({ lastHeartbeatAt: heartbeat }),
|
|
@@ -69,7 +71,7 @@ describe('ExS_InstancePresence_Service.buildPresenceInfo', () => {
|
|
|
69
71
|
wsConnected: false,
|
|
70
72
|
});
|
|
71
73
|
expect(r.presence).toBe(exs_instance_presence_enum_1.EXS_InstancePresence_Type.offline);
|
|
72
|
-
expect(r.reason).toContain('
|
|
74
|
+
expect(r.reason).toContain('300s');
|
|
73
75
|
});
|
|
74
76
|
it('heartbeat undefined + registry < 5 min régi → connecting', () => {
|
|
75
77
|
const created = new Date(fixedNow.getTime() - 2 * 60 * 1000); // 2 min
|
|
@@ -113,8 +115,9 @@ describe('ExS_InstancePresence_Service.buildPresenceInfo', () => {
|
|
|
113
115
|
// wsConnected info-célra megmarad
|
|
114
116
|
expect(r.wsConnected).toBe(true);
|
|
115
117
|
});
|
|
116
|
-
|
|
117
|
-
|
|
118
|
+
// REQ-CLUSTER-DEBUG-WS-001 Slice E4 (cycle 820): határok 30s/90s → 60s/180s.
|
|
119
|
+
it('boundary: heartbeat 59s → online (< 60s FRESH határ)', () => {
|
|
120
|
+
const heartbeat = new Date(fixedNow.getTime() - 59_999);
|
|
118
121
|
const r = exs_instance_presence_service_1.ExS_InstancePresence_Service.buildPresenceInfo({
|
|
119
122
|
instanceKey: 'k1',
|
|
120
123
|
entry: makeEntry({ lastHeartbeatAt: heartbeat }),
|
|
@@ -123,8 +126,8 @@ describe('ExS_InstancePresence_Service.buildPresenceInfo', () => {
|
|
|
123
126
|
});
|
|
124
127
|
expect(r.presence).toBe(exs_instance_presence_enum_1.EXS_InstancePresence_Type.online);
|
|
125
128
|
});
|
|
126
|
-
it('boundary: heartbeat exactly
|
|
127
|
-
const heartbeat = new Date(fixedNow.getTime() -
|
|
129
|
+
it('boundary: heartbeat exactly 60s → degraded (= FRESH határ)', () => {
|
|
130
|
+
const heartbeat = new Date(fixedNow.getTime() - 60_000);
|
|
128
131
|
const r = exs_instance_presence_service_1.ExS_InstancePresence_Service.buildPresenceInfo({
|
|
129
132
|
instanceKey: 'k1',
|
|
130
133
|
entry: makeEntry({ lastHeartbeatAt: heartbeat }),
|
|
@@ -133,8 +136,8 @@ describe('ExS_InstancePresence_Service.buildPresenceInfo', () => {
|
|
|
133
136
|
});
|
|
134
137
|
expect(r.presence).toBe(exs_instance_presence_enum_1.EXS_InstancePresence_Type.degraded);
|
|
135
138
|
});
|
|
136
|
-
it('boundary: heartbeat exactly
|
|
137
|
-
const heartbeat = new Date(fixedNow.getTime() -
|
|
139
|
+
it('boundary: heartbeat exactly 180s → degraded (még a STALE határon belül)', () => {
|
|
140
|
+
const heartbeat = new Date(fixedNow.getTime() - 180_000);
|
|
138
141
|
const r = exs_instance_presence_service_1.ExS_InstancePresence_Service.buildPresenceInfo({
|
|
139
142
|
instanceKey: 'k1',
|
|
140
143
|
entry: makeEntry({ lastHeartbeatAt: heartbeat }),
|
|
@@ -143,8 +146,8 @@ describe('ExS_InstancePresence_Service.buildPresenceInfo', () => {
|
|
|
143
146
|
});
|
|
144
147
|
expect(r.presence).toBe(exs_instance_presence_enum_1.EXS_InstancePresence_Type.degraded);
|
|
145
148
|
});
|
|
146
|
-
it('boundary: heartbeat
|
|
147
|
-
const heartbeat = new Date(fixedNow.getTime() -
|
|
149
|
+
it('boundary: heartbeat 181s → offline (> 180s STALE határ)', () => {
|
|
150
|
+
const heartbeat = new Date(fixedNow.getTime() - 181_000);
|
|
148
151
|
const r = exs_instance_presence_service_1.ExS_InstancePresence_Service.buildPresenceInfo({
|
|
149
152
|
instanceKey: 'k1',
|
|
150
153
|
entry: makeEntry({ lastHeartbeatAt: heartbeat }),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exs-instance-presence.service.spec.js","sourceRoot":"","sources":["../../../../../src/_modules/external-sessions/_services/exs-instance-presence.service.spec.ts"],"names":[],"mappings":";;AACA,mFAA+E;AAC/E,qFAAiF;AAGjF;;;;GAIG;AACH,QAAQ,CAAC,gDAAgD,EAAE,GAAS,EAAE;IAEpE,MAAM,QAAQ,GAAS,IAAI,IAAI,CAAC,0BAA0B,CAAC,CAAC;IAE5D,SAAS,SAAS,CAAC,MAIlB;QACC,OAAO;YACL,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,UAAU;YAC7C,eAAe,EAAE,MAAM,CAAC,eAAe;YACvC,SAAS,EAAE,MAAM,CAAC,OAAO,IAAI,IAAI,IAAI,CAAC,0BAA0B,CAAC;SAC/B,CAAC;IACvC,CAAC;IAED,EAAE,CAAC,yDAAyD,EAAE,GAAS,EAAE;QACvE,MAAM,CAAC,GACL,4DAA4B,CAAC,iBAAiB,CAAC;YAC7C,WAAW,EAAE,IAAI;YACjB,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC;YACpB,GAAG,EAAE,QAAQ;YACb,WAAW,EAAE,IAAI;SAClB,CAAC,CAAC;QACL,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,sDAAyB,CAAC,MAAM,CAAC,CAAC;QAC1D,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,GAAS,EAAE;QACtE,MAAM,KAAK,GAAS,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,aAAa;QAC/E,MAAM,CAAC,GACL,4DAA4B,CAAC,iBAAiB,CAAC;YAC7C,WAAW,EAAE,IAAI;YACjB,KAAK,EAAE,SAAS,CAAC,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC;YAC5C,GAAG,EAAE,QAAQ;YACb,WAAW,EAAE,IAAI;SAClB,CAAC,CAAC;QACL,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,sDAAyB,CAAC,MAAM,CAAC,CAAC;QAC1D,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,GAAS,EAAE;QAC7D,MAAM,SAAS,GAAS,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,CAAC;QAC9D,MAAM,CAAC,GACL,4DAA4B,CAAC,iBAAiB,CAAC;YAC7C,WAAW,EAAE,IAAI;YACjB,KAAK,EAAE,SAAS,CAAC,EAAE,eAAe,EAAE,SAAS,EAAE,CAAC;YAChD,GAAG,EAAE,QAAQ;YACb,WAAW,EAAE,KAAK;SACnB,CAAC,CAAC;QACL,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,sDAAyB,CAAC,MAAM,CAAC,CAAC;QAC1D,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"exs-instance-presence.service.spec.js","sourceRoot":"","sources":["../../../../../src/_modules/external-sessions/_services/exs-instance-presence.service.spec.ts"],"names":[],"mappings":";;AACA,mFAA+E;AAC/E,qFAAiF;AAGjF;;;;GAIG;AACH,QAAQ,CAAC,gDAAgD,EAAE,GAAS,EAAE;IAEpE,MAAM,QAAQ,GAAS,IAAI,IAAI,CAAC,0BAA0B,CAAC,CAAC;IAE5D,SAAS,SAAS,CAAC,MAIlB;QACC,OAAO;YACL,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,UAAU;YAC7C,eAAe,EAAE,MAAM,CAAC,eAAe;YACvC,SAAS,EAAE,MAAM,CAAC,OAAO,IAAI,IAAI,IAAI,CAAC,0BAA0B,CAAC;SAC/B,CAAC;IACvC,CAAC;IAED,EAAE,CAAC,yDAAyD,EAAE,GAAS,EAAE;QACvE,MAAM,CAAC,GACL,4DAA4B,CAAC,iBAAiB,CAAC;YAC7C,WAAW,EAAE,IAAI;YACjB,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC;YACpB,GAAG,EAAE,QAAQ;YACb,WAAW,EAAE,IAAI;SAClB,CAAC,CAAC;QACL,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,sDAAyB,CAAC,MAAM,CAAC,CAAC;QAC1D,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,GAAS,EAAE;QACtE,MAAM,KAAK,GAAS,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,aAAa;QAC/E,MAAM,CAAC,GACL,4DAA4B,CAAC,iBAAiB,CAAC;YAC7C,WAAW,EAAE,IAAI;YACjB,KAAK,EAAE,SAAS,CAAC,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC;YAC5C,GAAG,EAAE,QAAQ;YACb,WAAW,EAAE,IAAI;SAClB,CAAC,CAAC;QACL,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,sDAAyB,CAAC,MAAM,CAAC,CAAC;QAC1D,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,GAAS,EAAE;QAC7D,MAAM,SAAS,GAAS,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,CAAC;QAC9D,MAAM,CAAC,GACL,4DAA4B,CAAC,iBAAiB,CAAC;YAC7C,WAAW,EAAE,IAAI;YACjB,KAAK,EAAE,SAAS,CAAC,EAAE,eAAe,EAAE,SAAS,EAAE,CAAC;YAChD,GAAG,EAAE,QAAQ;YACb,WAAW,EAAE,KAAK;SACnB,CAAC,CAAC;QACL,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,sDAAyB,CAAC,MAAM,CAAC,CAAC;QAC1D,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kEAAkE,EAAE,GAAS,EAAE;QAChF,6EAA6E;QAC7E,+DAA+D;QAC/D,MAAM,SAAS,GAAS,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,CAAC;QAC9D,MAAM,CAAC,GACL,4DAA4B,CAAC,iBAAiB,CAAC;YAC7C,WAAW,EAAE,IAAI;YACjB,KAAK,EAAE,SAAS,CAAC,EAAE,eAAe,EAAE,SAAS,EAAE,CAAC;YAChD,GAAG,EAAE,QAAQ;YACb,WAAW,EAAE,KAAK;SACnB,CAAC,CAAC;QACL,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,sDAAyB,CAAC,QAAQ,CAAC,CAAC;QAC5D,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oEAAoE,EAAE,GAAS,EAAE;QAClF,MAAM,SAAS,GAAS,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC;QAC/D,MAAM,CAAC,GACL,4DAA4B,CAAC,iBAAiB,CAAC;YAC7C,WAAW,EAAE,IAAI;YACjB,KAAK,EAAE,SAAS,CAAC,EAAE,eAAe,EAAE,SAAS,EAAE,CAAC;YAChD,GAAG,EAAE,QAAQ;YACb,WAAW,EAAE,KAAK;SACnB,CAAC,CAAC;QACL,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,sDAAyB,CAAC,OAAO,CAAC,CAAC;QAC3D,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0DAA0D,EAAE,GAAS,EAAE;QACxE,MAAM,OAAO,GAAS,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,QAAQ;QAC5E,MAAM,CAAC,GACL,4DAA4B,CAAC,iBAAiB,CAAC;YAC7C,WAAW,EAAE,IAAI;YACjB,KAAK,EAAE,SAAS,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;YACtC,GAAG,EAAE,QAAQ;YACb,WAAW,EAAE,KAAK;SACnB,CAAC,CAAC;QACL,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,sDAAyB,CAAC,UAAU,CAAC,CAAC;QAC9D,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,aAAa,EAAE,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,GAAS,EAAE;QACrE,MAAM,OAAO,GAAS,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS;QAC9E,MAAM,CAAC,GACL,4DAA4B,CAAC,iBAAiB,CAAC;YAC7C,WAAW,EAAE,IAAI;YACjB,KAAK,EAAE,SAAS,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;YACtC,GAAG,EAAE,QAAQ;YACb,WAAW,EAAE,KAAK;SACnB,CAAC,CAAC;QACL,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,sDAAyB,CAAC,OAAO,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,GAAS,EAAE;QACpE,MAAM,CAAC,GACL,4DAA4B,CAAC,iBAAiB,CAAC;YAC7C,WAAW,EAAE,aAAa;YAC1B,KAAK,EAAE,SAAS;YAChB,GAAG,EAAE,QAAQ;YACb,WAAW,EAAE,KAAK;SACnB,CAAC,CAAC;QACL,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,sDAAyB,CAAC,OAAO,CAAC,CAAC;QAC3D,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2EAA2E,EAAE,GAAS,EAAE;QACzF,MAAM,CAAC,GACL,4DAA4B,CAAC,iBAAiB,CAAC;YAC7C,WAAW,EAAE,aAAa;YAC1B,KAAK,EAAE,SAAS;YAChB,GAAG,EAAE,QAAQ;YACb,WAAW,EAAE,IAAI;SAClB,CAAC,CAAC;QACL,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,sDAAyB,CAAC,OAAO,CAAC,CAAC;QAC3D,kCAAkC;QAClC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,6EAA6E;IAE7E,EAAE,CAAC,sDAAsD,EAAE,GAAS,EAAE;QACpE,MAAM,SAAS,GAAS,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,CAAC;QAC9D,MAAM,CAAC,GACL,4DAA4B,CAAC,iBAAiB,CAAC;YAC7C,WAAW,EAAE,IAAI;YACjB,KAAK,EAAE,SAAS,CAAC,EAAE,eAAe,EAAE,SAAS,EAAE,CAAC;YAChD,GAAG,EAAE,QAAQ;YACb,WAAW,EAAE,KAAK;SACnB,CAAC,CAAC;QACL,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,sDAAyB,CAAC,MAAM,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4DAA4D,EAAE,GAAS,EAAE;QAC1E,MAAM,SAAS,GAAS,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,CAAC;QAC9D,MAAM,CAAC,GACL,4DAA4B,CAAC,iBAAiB,CAAC;YAC7C,WAAW,EAAE,IAAI;YACjB,KAAK,EAAE,SAAS,CAAC,EAAE,eAAe,EAAE,SAAS,EAAE,CAAC;YAChD,GAAG,EAAE,QAAQ;YACb,WAAW,EAAE,KAAK;SACnB,CAAC,CAAC;QACL,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,sDAAyB,CAAC,QAAQ,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yEAAyE,EAAE,GAAS,EAAE;QACvF,MAAM,SAAS,GAAS,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC;QAC/D,MAAM,CAAC,GACL,4DAA4B,CAAC,iBAAiB,CAAC;YAC7C,WAAW,EAAE,IAAI;YACjB,KAAK,EAAE,SAAS,CAAC,EAAE,eAAe,EAAE,SAAS,EAAE,CAAC;YAChD,GAAG,EAAE,QAAQ;YACb,WAAW,EAAE,KAAK;SACnB,CAAC,CAAC;QACL,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,sDAAyB,CAAC,QAAQ,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yDAAyD,EAAE,GAAS,EAAE;QACvE,MAAM,SAAS,GAAS,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC;QAC/D,MAAM,CAAC,GACL,4DAA4B,CAAC,iBAAiB,CAAC;YAC7C,WAAW,EAAE,IAAI;YACjB,KAAK,EAAE,SAAS,CAAC,EAAE,eAAe,EAAE,SAAS,EAAE,CAAC;YAChD,GAAG,EAAE,QAAQ;YACb,WAAW,EAAE,KAAK;SACnB,CAAC,CAAC;QACL,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,sDAAyB,CAAC,OAAO,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -48,16 +48,20 @@ export declare class ExS_InstanceRegistry_DataService extends DyNTS_DataService<
|
|
|
48
48
|
appVersion?: string;
|
|
49
49
|
}): Promise<void>;
|
|
50
50
|
/**
|
|
51
|
-
* Online peer instance-ok lekérése: `lastHeartbeatAt` az utolsó
|
|
51
|
+
* Online peer instance-ok lekérése: `lastHeartbeatAt` az utolsó 180s-ben frissült.
|
|
52
52
|
* Kiszűri a saját instance-t.
|
|
53
53
|
*
|
|
54
|
+
* REQ-CLUSTER-DEBUG-WS-001 Slice E4 (cycle 820): 90s → 180s, hogy 1 elveszett
|
|
55
|
+
* heartbeat-ciklus (DB monitor timeout) ne dobja offline-ra a peer-t.
|
|
56
|
+
*
|
|
54
57
|
* @see REQ-PEI-010
|
|
55
58
|
*/
|
|
56
59
|
listOnlinePeers(params: {
|
|
57
60
|
excludeInstanceKey: string;
|
|
58
61
|
}): Promise<MRg_InstanceRegistry[]>;
|
|
59
62
|
/**
|
|
60
|
-
* Adott instance liveness ellenőrzése: online ha `lastHeartbeatAt` <
|
|
63
|
+
* Adott instance liveness ellenőrzése: online ha `lastHeartbeatAt` < 180s.
|
|
64
|
+
* REQ-CLUSTER-DEBUG-WS-001 Slice E4 (cycle 820): 90s → 180s tűréshatár.
|
|
61
65
|
*/
|
|
62
66
|
isInstanceOnline(params: {
|
|
63
67
|
instanceKey: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exs-instance-registry.data-service.d.ts","sourceRoot":"","sources":["../../../../../src/_modules/external-sessions/_services/exs-instance-registry.data-service.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAG1D,OAAO,EACL,oBAAoB,EAErB,MAAM,+FAA+F,CAAC;AAEvG;;;GAGG;AACH,qBAAa,gCAAiC,SAAQ,iBAAiB,CAAC,oBAAoB,CAAC;gBAE/E,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE;IAQtC;;;OAGG;IACG,iCAAiC,CAAC,MAAM,EAAE;QAC9C,iBAAiB,EAAE,MAAM,CAAC;QAC1B,mBAAmB,EAAE,MAAM,CAAC;QAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAkFjC;;;;;;;;;;;;OAYG;IACG,6BAA6B,CAAC,MAAM,EAAE;QAC1C,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAoEjC;;;;;OAKG;IACG,eAAe,CAAC,MAAM,EAAE;QAC5B,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,GAAG,OAAO,CAAC,IAAI,CAAC;IAqCjB
|
|
1
|
+
{"version":3,"file":"exs-instance-registry.data-service.d.ts","sourceRoot":"","sources":["../../../../../src/_modules/external-sessions/_services/exs-instance-registry.data-service.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAG1D,OAAO,EACL,oBAAoB,EAErB,MAAM,+FAA+F,CAAC;AAEvG;;;GAGG;AACH,qBAAa,gCAAiC,SAAQ,iBAAiB,CAAC,oBAAoB,CAAC;gBAE/E,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE;IAQtC;;;OAGG;IACG,iCAAiC,CAAC,MAAM,EAAE;QAC9C,iBAAiB,EAAE,MAAM,CAAC;QAC1B,mBAAmB,EAAE,MAAM,CAAC;QAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAkFjC;;;;;;;;;;;;OAYG;IACG,6BAA6B,CAAC,MAAM,EAAE;QAC1C,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAoEjC;;;;;OAKG;IACG,eAAe,CAAC,MAAM,EAAE;QAC5B,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,GAAG,OAAO,CAAC,IAAI,CAAC;IAqCjB;;;;;;;;OAQG;IACG,eAAe,CAAC,MAAM,EAAE;QAAE,kBAAkB,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAuB9F;;;OAGG;IACG,gBAAgB,CAAC,MAAM,EAAE;QAAE,WAAW,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IA6BzE;;OAEG;IACG,sBAAsB,IAAI,OAAO,CAAC,oBAAoB,EAAE,CAAC;CAsBhE"}
|
package/server/build/src/_modules/external-sessions/_services/exs-instance-registry.data-service.js
CHANGED
|
@@ -191,14 +191,17 @@ class ExS_InstanceRegistry_DataService extends nts_dynamo_1.DyNTS_DataService {
|
|
|
191
191
|
}
|
|
192
192
|
}
|
|
193
193
|
/**
|
|
194
|
-
* Online peer instance-ok lekérése: `lastHeartbeatAt` az utolsó
|
|
194
|
+
* Online peer instance-ok lekérése: `lastHeartbeatAt` az utolsó 180s-ben frissült.
|
|
195
195
|
* Kiszűri a saját instance-t.
|
|
196
196
|
*
|
|
197
|
+
* REQ-CLUSTER-DEBUG-WS-001 Slice E4 (cycle 820): 90s → 180s, hogy 1 elveszett
|
|
198
|
+
* heartbeat-ciklus (DB monitor timeout) ne dobja offline-ra a peer-t.
|
|
199
|
+
*
|
|
197
200
|
* @see REQ-PEI-010
|
|
198
201
|
*/
|
|
199
202
|
async listOnlinePeers(params) {
|
|
200
203
|
try {
|
|
201
|
-
const cutoff = new Date(Date.now() -
|
|
204
|
+
const cutoff = new Date(Date.now() - 180_000);
|
|
202
205
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
203
206
|
const all = await this.findDataList({
|
|
204
207
|
lastHeartbeatAt: { $gt: cutoff },
|
|
@@ -216,7 +219,8 @@ class ExS_InstanceRegistry_DataService extends nts_dynamo_1.DyNTS_DataService {
|
|
|
216
219
|
}
|
|
217
220
|
}
|
|
218
221
|
/**
|
|
219
|
-
* Adott instance liveness ellenőrzése: online ha `lastHeartbeatAt` <
|
|
222
|
+
* Adott instance liveness ellenőrzése: online ha `lastHeartbeatAt` < 180s.
|
|
223
|
+
* REQ-CLUSTER-DEBUG-WS-001 Slice E4 (cycle 820): 90s → 180s tűréshatár.
|
|
220
224
|
*/
|
|
221
225
|
async isInstanceOnline(params) {
|
|
222
226
|
try {
|
|
@@ -229,7 +233,7 @@ class ExS_InstanceRegistry_DataService extends nts_dynamo_1.DyNTS_DataService {
|
|
|
229
233
|
return false;
|
|
230
234
|
}
|
|
231
235
|
const age = Date.now() - new Date(entry.lastHeartbeatAt).getTime();
|
|
232
|
-
return age <
|
|
236
|
+
return age < 180_000;
|
|
233
237
|
}
|
|
234
238
|
catch (error) {
|
|
235
239
|
throw new ccap_error_control_model_1.CCAP_Error({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exs-instance-registry.data-service.js","sourceRoot":"","sources":["../../../../../src/_modules/external-sessions/_services/exs-instance-registry.data-service.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"exs-instance-registry.data-service.js","sourceRoot":"","sources":["../../../../../src/_modules/external-sessions/_services/exs-instance-registry.data-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* REQ-CLUSTER-DEBUG-WS-001 Slice E2 (cycle 820): a saját PEI heartbeat futás-
|
|
3
|
+
* statusa a Settings → Cluster debug-paneljéhez. A user a panelben látja, mikor
|
|
4
|
+
* írta utoljára SIKERESEN a registry-be a heartbeat-et — ha pl. MongoDB monitor-
|
|
5
|
+
* timeout szakítja meg a kapcsolatot, az itt látszódik, és a peer offline-ra
|
|
6
|
+
* dobás oka egyértelmű lesz.
|
|
7
|
+
*/
|
|
8
|
+
export interface PEI_HeartbeatStatus_Interface {
|
|
9
|
+
/** Indul-e a heartbeat-loop. */
|
|
10
|
+
isRunning: boolean;
|
|
11
|
+
/** Utolsó SIKERES írás timestamp-je (ms). `null` ha még nem futott le. */
|
|
12
|
+
lastSuccessAtMs: number | null;
|
|
13
|
+
/** Utolsó SIKERTELEN írás timestamp-je (ms). `null` ha sose volt. */
|
|
14
|
+
lastFailureAtMs: number | null;
|
|
15
|
+
/** Utolsó hiba üzenete; `null` ha nincs / azóta sikerült. */
|
|
16
|
+
lastFailureMessage: string | null;
|
|
17
|
+
/**
|
|
18
|
+
* Egymás utáni sikertelen írások száma. 0 = egészséges. Növekszik DB-monitor-
|
|
19
|
+
* timeout / connection-drop esetén; sikeres írás visszaállítja 0-ra.
|
|
20
|
+
*/
|
|
21
|
+
consecutiveFailures: number;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=pei-heartbeat-status.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pei-heartbeat-status.interface.d.ts","sourceRoot":"","sources":["../../../../../../src/_modules/peer-instance/_models/interfaces/pei-heartbeat-status.interface.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,WAAW,6BAA6B;IAE5C,gCAAgC;IAChC,SAAS,EAAE,OAAO,CAAC;IAEnB,0EAA0E;IAC1E,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAE/B,qEAAqE;IACrE,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAE/B,6DAA6D;IAC7D,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAElC;;;OAGG;IACH,mBAAmB,EAAE,MAAM,CAAC;CAC7B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pei-heartbeat-status.interface.js","sourceRoot":"","sources":["../../../../../../src/_modules/peer-instance/_models/interfaces/pei-heartbeat-status.interface.ts"],"names":[],"mappings":""}
|
package/server/build/src/_modules/peer-instance/_services/pei-heartbeat-self-healing.spec.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* REQ-CLUSTER-DEBUG-WS-001 Slice E2 (cycle 820): self-healing heartbeat
|
|
3
|
+
* tracker spec — `consecutiveFailures` track + recovery + `getStatus()`.
|
|
4
|
+
*
|
|
5
|
+
* Pattern: Object.create + privát mezők kézi init (cycle 187 minta).
|
|
6
|
+
* A `createInstanceRegistryDS()` factory metódust stub-oljuk, hogy a real
|
|
7
|
+
* DyNTS DataService konstruktor ne fusson le.
|
|
8
|
+
*/
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=pei-heartbeat-self-healing.spec.d.ts.map
|
package/server/build/src/_modules/peer-instance/_services/pei-heartbeat-self-healing.spec.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pei-heartbeat-self-healing.spec.d.ts","sourceRoot":"","sources":["../../../../../src/_modules/peer-instance/_services/pei-heartbeat-self-healing.spec.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* REQ-CLUSTER-DEBUG-WS-001 Slice E2 (cycle 820): self-healing heartbeat
|
|
4
|
+
* tracker spec — `consecutiveFailures` track + recovery + `getStatus()`.
|
|
5
|
+
*
|
|
6
|
+
* Pattern: Object.create + privát mezők kézi init (cycle 187 minta).
|
|
7
|
+
* A `createInstanceRegistryDS()` factory metódust stub-oljuk, hogy a real
|
|
8
|
+
* DyNTS DataService konstruktor ne fusson le.
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
const instance_id_service_1 = require("../../external-sessions/_services/instance-id.service");
|
|
12
|
+
const pei_heartbeat_control_service_1 = require("./pei-heartbeat.control-service");
|
|
13
|
+
describe('PEI_Heartbeat_ControlService self-healing tracker (REQ-CLUSTER-DEBUG-WS-001 Slice E2)', () => {
|
|
14
|
+
function makeSvc() {
|
|
15
|
+
const svc = Object.create(pei_heartbeat_control_service_1.PEI_Heartbeat_ControlService.prototype);
|
|
16
|
+
svc.publicHost = '127.0.0.1';
|
|
17
|
+
svc.httpPort = 39050;
|
|
18
|
+
svc.isHttpsEnabled = false;
|
|
19
|
+
svc.isRunning = true;
|
|
20
|
+
svc.lastSuccessAtMs = null;
|
|
21
|
+
svc.lastFailureAtMs = null;
|
|
22
|
+
svc.lastFailureMessage = null;
|
|
23
|
+
svc.consecutiveFailures = 0;
|
|
24
|
+
return svc;
|
|
25
|
+
}
|
|
26
|
+
function stubDs(svc, updateHeartbeat) {
|
|
27
|
+
const fakeDs = {
|
|
28
|
+
updateHeartbeat: updateHeartbeat,
|
|
29
|
+
};
|
|
30
|
+
spyOn(svc, 'createInstanceRegistryDS').and.returnValue(fakeDs);
|
|
31
|
+
}
|
|
32
|
+
beforeEach(() => {
|
|
33
|
+
spyOn(instance_id_service_1.ExS_InstanceId_Service.getInstance(), 'getInstanceId').and.returnValue('test-key');
|
|
34
|
+
});
|
|
35
|
+
it('| siker → consecutiveFailures = 0, lastSuccessAtMs frissül', async () => {
|
|
36
|
+
const svc = makeSvc();
|
|
37
|
+
const update = jasmine.createSpy('updateHeartbeat').and.resolveTo(undefined);
|
|
38
|
+
stubDs(svc, update);
|
|
39
|
+
await svc.writeHeartbeatTracked();
|
|
40
|
+
const status = svc.getStatus();
|
|
41
|
+
expect(status.consecutiveFailures).toBe(0);
|
|
42
|
+
expect(status.lastSuccessAtMs).not.toBeNull();
|
|
43
|
+
expect(status.lastFailureMessage).toBeNull();
|
|
44
|
+
expect(update).toHaveBeenCalledTimes(1);
|
|
45
|
+
});
|
|
46
|
+
it('| failure → consecutiveFailures++, lastFailureMessage frissül', async () => {
|
|
47
|
+
const svc = makeSvc();
|
|
48
|
+
const update = jasmine.createSpy('updateHeartbeat').and.rejectWith(new Error('Mongo monitor timeout'));
|
|
49
|
+
stubDs(svc, update);
|
|
50
|
+
// Quick-retry-t blokkoljuk: már beállítjuk a handle-t hogy a `scheduleQuickRetry` no-op legyen
|
|
51
|
+
svc.quickRetryHandle = setTimeout(() => { }, 60_000);
|
|
52
|
+
await svc.writeHeartbeatTracked();
|
|
53
|
+
const status = svc.getStatus();
|
|
54
|
+
expect(status.consecutiveFailures).toBe(1);
|
|
55
|
+
expect(status.lastFailureMessage).toBe('Mongo monitor timeout');
|
|
56
|
+
// cleanup
|
|
57
|
+
const handle = svc.quickRetryHandle;
|
|
58
|
+
if (handle) {
|
|
59
|
+
clearTimeout(handle);
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
it('| failure → siker → consecutiveFailures vissza 0-ra', async () => {
|
|
63
|
+
const svc = makeSvc();
|
|
64
|
+
svc.consecutiveFailures = 2;
|
|
65
|
+
svc.lastFailureMessage = 'previous error';
|
|
66
|
+
const update = jasmine.createSpy('updateHeartbeat').and.resolveTo(undefined);
|
|
67
|
+
stubDs(svc, update);
|
|
68
|
+
await svc.writeHeartbeatTracked();
|
|
69
|
+
const status = svc.getStatus();
|
|
70
|
+
expect(status.consecutiveFailures).toBe(0);
|
|
71
|
+
expect(status.lastFailureMessage).toBeNull();
|
|
72
|
+
});
|
|
73
|
+
it('| getStatus alapból isRunning=false ha service nem indult', () => {
|
|
74
|
+
const svc = makeSvc();
|
|
75
|
+
svc.isRunning = false;
|
|
76
|
+
const status = svc.getStatus();
|
|
77
|
+
expect(status.isRunning).toBeFalse();
|
|
78
|
+
expect(status.lastSuccessAtMs).toBeNull();
|
|
79
|
+
});
|
|
80
|
+
});
|
|
81
|
+
//# sourceMappingURL=pei-heartbeat-self-healing.spec.js.map
|
package/server/build/src/_modules/peer-instance/_services/pei-heartbeat-self-healing.spec.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pei-heartbeat-self-healing.spec.js","sourceRoot":"","sources":["../../../../../src/_modules/peer-instance/_services/pei-heartbeat-self-healing.spec.ts"],"names":[],"mappings":"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"}
|
package/server/build/src/_modules/peer-instance/_services/pei-heartbeat.control-service.d.ts
CHANGED
|
@@ -1,20 +1,47 @@
|
|
|
1
1
|
import { DyNTS_SingletonService } from '@futdevpro/nts-dynamo';
|
|
2
2
|
import { ExS_InstanceRegistry_DataService } from '../../external-sessions/_services/exs-instance-registry.data-service';
|
|
3
|
+
import { PEI_HeartbeatStatus_Interface } from '../_models/interfaces/pei-heartbeat-status.interface';
|
|
3
4
|
/**
|
|
4
|
-
* Heartbeat writer: 30s-enként frissíti a saját registry sort (`lastHeartbeatAt`
|
|
5
|
-
* A liveness deriválás: `Date.now() - lastHeartbeatAt <
|
|
5
|
+
* Heartbeat writer: 30s-enként frissíti a saját registry sort (`lastHeartbeatAt`
|
|
6
|
+
* + endpoint mezők). A liveness deriválás: `Date.now() - lastHeartbeatAt < 180s`
|
|
7
|
+
* → `online` (REQ-CLUSTER-DEBUG-WS-001 Slice E4 cycle 820 lazítás).
|
|
8
|
+
*
|
|
9
|
+
* REQ-CLUSTER-DEBUG-WS-001 Slice E2 (cycle 820): self-healing + visibility.
|
|
10
|
+
* A korábbi `setInterval(() => writeHeartbeat().catch(log))` silent-swallow-ban
|
|
11
|
+
* eltüntette a hibákat — a user csak akkor vette észre, ha a peer már offline-ra
|
|
12
|
+
* dobta a saját instance-t. Most:
|
|
13
|
+
* - track-eljük a `consecutiveFailures` + `lastSuccessAtMs` + `lastFailureMessage`
|
|
14
|
+
* mezőket; a Cluster debug-panel ezt mutatja.
|
|
15
|
+
* - failure után 5s-es quick-retry (a 30s-os ciklus mellett); így 1 elveszett
|
|
16
|
+
* ciklus 5s-en belül helyreáll, nem 30s-en.
|
|
17
|
+
* - 1+ failure utáni sikeres írás triggeri a `PEI_WsClient.refreshPeerConnections()`-t,
|
|
18
|
+
* mert a DB-recovery után a peer-WS-kapcsolatok is állhatnak ferdén.
|
|
6
19
|
*
|
|
7
20
|
* @see REQ-PEI-010
|
|
8
21
|
*/
|
|
9
22
|
export declare class PEI_Heartbeat_ControlService extends DyNTS_SingletonService {
|
|
10
23
|
/** Heartbeat intervallum (30s). */
|
|
11
24
|
private static readonly HEARTBEAT_INTERVAL_MS;
|
|
25
|
+
/**
|
|
26
|
+
* REQ-CLUSTER-DEBUG-WS-001 Slice E2 (cycle 820): failure utáni quick-retry
|
|
27
|
+
* késleltetés (5s). A 30s-os fő ciklus mellett, max 1× retry indul.
|
|
28
|
+
*/
|
|
29
|
+
private static readonly QUICK_RETRY_DELAY_MS;
|
|
12
30
|
private intervalHandle;
|
|
31
|
+
private quickRetryHandle;
|
|
13
32
|
private isRunning;
|
|
14
33
|
/** Cached endpoint adatok — bootstrap-kor beállítva. */
|
|
15
34
|
private publicHost;
|
|
16
35
|
private httpPort;
|
|
17
36
|
private isHttpsEnabled;
|
|
37
|
+
/**
|
|
38
|
+
* REQ-CLUSTER-DEBUG-WS-001 Slice E2 (cycle 820): heartbeat self-status track.
|
|
39
|
+
* A diagnostics endpoint ezt veszi át a `getStatus()`-szal.
|
|
40
|
+
*/
|
|
41
|
+
private lastSuccessAtMs;
|
|
42
|
+
private lastFailureAtMs;
|
|
43
|
+
private lastFailureMessage;
|
|
44
|
+
private consecutiveFailures;
|
|
18
45
|
static getInstance(): PEI_Heartbeat_ControlService;
|
|
19
46
|
/**
|
|
20
47
|
* Heartbeat indítása: endpoint config beállítás + azonnali első heartbeat + 30s intervallum.
|
|
@@ -27,6 +54,26 @@ export declare class PEI_Heartbeat_ControlService extends DyNTS_SingletonService
|
|
|
27
54
|
* Heartbeat leállítása (graceful shutdown).
|
|
28
55
|
*/
|
|
29
56
|
stop(): void;
|
|
57
|
+
/**
|
|
58
|
+
* REQ-CLUSTER-DEBUG-WS-001 Slice E2 (cycle 820): saját heartbeat-status snapshot
|
|
59
|
+
* a Cluster debug-panelnek.
|
|
60
|
+
*/
|
|
61
|
+
getStatus(): PEI_HeartbeatStatus_Interface;
|
|
62
|
+
/**
|
|
63
|
+
* REQ-CLUSTER-DEBUG-WS-001 Slice E2 (cycle 820): heartbeat-write a self-healing
|
|
64
|
+
* tracker-rel:
|
|
65
|
+
* - Sikeres → reset failure-counter, refresh WS-client-et HA korábban failure volt
|
|
66
|
+
* (DB-recovery ⇒ peer-WS is állhatott ferdén, érdemes újra-csatlakozni).
|
|
67
|
+
* - Sikertelen → counter++ + log + 5s-es quick-retry timeout.
|
|
68
|
+
*/
|
|
69
|
+
private writeHeartbeatTracked;
|
|
70
|
+
/**
|
|
71
|
+
* REQ-CLUSTER-DEBUG-WS-001 Slice E2 (cycle 820): 5s-es quick-retry ütemezés
|
|
72
|
+
* heartbeat-failure után. A `consecutiveFailures < 5` guard megakadályozza,
|
|
73
|
+
* hogy folyamatos DB-outage alatt mindig fusson — 5+ konszekutív failure
|
|
74
|
+
* után csak a 30s-os fő ciklusra hagyatkozunk.
|
|
75
|
+
*/
|
|
76
|
+
private scheduleQuickRetry;
|
|
30
77
|
/**
|
|
31
78
|
* Egyetlen heartbeat írás a registry-be.
|
|
32
79
|
*/
|
package/server/build/src/_modules/peer-instance/_services/pei-heartbeat.control-service.d.ts.map
CHANGED
|
@@ -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;AAK/D,OAAO,EAAE,gCAAgC,EAAE,MAAM,sEAAsE,CAAC;
|
|
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;AAK/D,OAAO,EAAE,gCAAgC,EAAE,MAAM,sEAAsE,CAAC;AACxH,OAAO,EAAE,6BAA6B,EAAE,MAAM,sDAAsD,CAAC;AAGrG;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,4BAA6B,SAAQ,sBAAsB;IAEtE,mCAAmC;IACnC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,qBAAqB,CAAuB;IAEpE;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CAAsB;IAElE,OAAO,CAAC,cAAc,CAA+C;IACrE,OAAO,CAAC,gBAAgB,CAA8C;IACtE,OAAO,CAAC,SAAS,CAAkB;IAEnC,wDAAwD;IACxD,OAAO,CAAC,UAAU,CAAc;IAChC,OAAO,CAAC,QAAQ,CAAa;IAC7B,OAAO,CAAC,cAAc,CAAkB;IAExC;;;OAGG;IACH,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,kBAAkB,CAAuB;IACjD,OAAO,CAAC,mBAAmB,CAAa;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;IA2BjF;;OAEG;IACH,IAAI,IAAI,IAAI;IAeZ;;;OAGG;IACH,SAAS,IAAI,6BAA6B;IAU1C;;;;;;OAMG;YACW,qBAAqB;IA+BnC;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB;IAgB1B;;OAEG;YACW,cAAc;IAc5B;;;;;OAKG;IACH,SAAS,CAAC,wBAAwB,IAAI,gCAAgC;CAGvE"}
|
|
@@ -9,20 +9,46 @@ const instance_id_service_1 = require("../../external-sessions/_services/instanc
|
|
|
9
9
|
const exs_instance_registry_data_service_1 = require("../../external-sessions/_services/exs-instance-registry.data-service");
|
|
10
10
|
const pei_public_host_util_1 = require("../_collections/utils/pei-public-host.util");
|
|
11
11
|
/**
|
|
12
|
-
* Heartbeat writer: 30s-enként frissíti a saját registry sort (`lastHeartbeatAt`
|
|
13
|
-
* A liveness deriválás: `Date.now() - lastHeartbeatAt <
|
|
12
|
+
* Heartbeat writer: 30s-enként frissíti a saját registry sort (`lastHeartbeatAt`
|
|
13
|
+
* + endpoint mezők). A liveness deriválás: `Date.now() - lastHeartbeatAt < 180s`
|
|
14
|
+
* → `online` (REQ-CLUSTER-DEBUG-WS-001 Slice E4 cycle 820 lazítás).
|
|
15
|
+
*
|
|
16
|
+
* REQ-CLUSTER-DEBUG-WS-001 Slice E2 (cycle 820): self-healing + visibility.
|
|
17
|
+
* A korábbi `setInterval(() => writeHeartbeat().catch(log))` silent-swallow-ban
|
|
18
|
+
* eltüntette a hibákat — a user csak akkor vette észre, ha a peer már offline-ra
|
|
19
|
+
* dobta a saját instance-t. Most:
|
|
20
|
+
* - track-eljük a `consecutiveFailures` + `lastSuccessAtMs` + `lastFailureMessage`
|
|
21
|
+
* mezőket; a Cluster debug-panel ezt mutatja.
|
|
22
|
+
* - failure után 5s-es quick-retry (a 30s-os ciklus mellett); így 1 elveszett
|
|
23
|
+
* ciklus 5s-en belül helyreáll, nem 30s-en.
|
|
24
|
+
* - 1+ failure utáni sikeres írás triggeri a `PEI_WsClient.refreshPeerConnections()`-t,
|
|
25
|
+
* mert a DB-recovery után a peer-WS-kapcsolatok is állhatnak ferdén.
|
|
14
26
|
*
|
|
15
27
|
* @see REQ-PEI-010
|
|
16
28
|
*/
|
|
17
29
|
class PEI_Heartbeat_ControlService extends nts_dynamo_1.DyNTS_SingletonService {
|
|
18
30
|
/** Heartbeat intervallum (30s). */
|
|
19
31
|
static HEARTBEAT_INTERVAL_MS = 30 * fsm_dynamo_2.second;
|
|
32
|
+
/**
|
|
33
|
+
* REQ-CLUSTER-DEBUG-WS-001 Slice E2 (cycle 820): failure utáni quick-retry
|
|
34
|
+
* késleltetés (5s). A 30s-os fő ciklus mellett, max 1× retry indul.
|
|
35
|
+
*/
|
|
36
|
+
static QUICK_RETRY_DELAY_MS = 5 * fsm_dynamo_2.second;
|
|
20
37
|
intervalHandle = null;
|
|
38
|
+
quickRetryHandle = null;
|
|
21
39
|
isRunning = false;
|
|
22
40
|
/** Cached endpoint adatok — bootstrap-kor beállítva. */
|
|
23
41
|
publicHost = '';
|
|
24
42
|
httpPort = 0;
|
|
25
43
|
isHttpsEnabled = false;
|
|
44
|
+
/**
|
|
45
|
+
* REQ-CLUSTER-DEBUG-WS-001 Slice E2 (cycle 820): heartbeat self-status track.
|
|
46
|
+
* A diagnostics endpoint ezt veszi át a `getStatus()`-szal.
|
|
47
|
+
*/
|
|
48
|
+
lastSuccessAtMs = null;
|
|
49
|
+
lastFailureAtMs = null;
|
|
50
|
+
lastFailureMessage = null;
|
|
51
|
+
consecutiveFailures = 0;
|
|
26
52
|
static getInstance() {
|
|
27
53
|
return PEI_Heartbeat_ControlService.getSingletonInstance();
|
|
28
54
|
}
|
|
@@ -36,12 +62,13 @@ class PEI_Heartbeat_ControlService extends nts_dynamo_1.DyNTS_SingletonService {
|
|
|
36
62
|
this.publicHost = pei_public_host_util_1.PEI_PublicHost_Util.resolvePublicHost();
|
|
37
63
|
this.httpPort = params.httpPort;
|
|
38
64
|
this.isHttpsEnabled = params.isHttpsEnabled;
|
|
39
|
-
// Azonnali első heartbeat
|
|
40
|
-
await this.
|
|
65
|
+
// Azonnali első heartbeat (eredmény-tracker bekapcsolva)
|
|
66
|
+
await this.writeHeartbeatTracked();
|
|
41
67
|
// 30s intervallum
|
|
42
68
|
this.intervalHandle = setInterval(() => {
|
|
43
|
-
this.
|
|
44
|
-
|
|
69
|
+
this.writeHeartbeatTracked().catch((error) => {
|
|
70
|
+
// Defensive: writeHeartbeatTracked már log-ol és track-el — ez csak last-resort
|
|
71
|
+
fsm_dynamo_1.DyFM_Log.error(`PEI_Heartbeat | Tracked write rejected | ${String(error)}`);
|
|
45
72
|
});
|
|
46
73
|
}, PEI_Heartbeat_ControlService.HEARTBEAT_INTERVAL_MS);
|
|
47
74
|
this.isRunning = true;
|
|
@@ -55,9 +82,83 @@ class PEI_Heartbeat_ControlService extends nts_dynamo_1.DyNTS_SingletonService {
|
|
|
55
82
|
clearInterval(this.intervalHandle);
|
|
56
83
|
this.intervalHandle = null;
|
|
57
84
|
}
|
|
85
|
+
if (this.quickRetryHandle) {
|
|
86
|
+
clearTimeout(this.quickRetryHandle);
|
|
87
|
+
this.quickRetryHandle = null;
|
|
88
|
+
}
|
|
58
89
|
this.isRunning = false;
|
|
59
90
|
fsm_dynamo_1.DyFM_Log.info('PEI_Heartbeat | Stopped');
|
|
60
91
|
}
|
|
92
|
+
/**
|
|
93
|
+
* REQ-CLUSTER-DEBUG-WS-001 Slice E2 (cycle 820): saját heartbeat-status snapshot
|
|
94
|
+
* a Cluster debug-panelnek.
|
|
95
|
+
*/
|
|
96
|
+
getStatus() {
|
|
97
|
+
return {
|
|
98
|
+
isRunning: this.isRunning,
|
|
99
|
+
lastSuccessAtMs: this.lastSuccessAtMs,
|
|
100
|
+
lastFailureAtMs: this.lastFailureAtMs,
|
|
101
|
+
lastFailureMessage: this.lastFailureMessage,
|
|
102
|
+
consecutiveFailures: this.consecutiveFailures,
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* REQ-CLUSTER-DEBUG-WS-001 Slice E2 (cycle 820): heartbeat-write a self-healing
|
|
107
|
+
* tracker-rel:
|
|
108
|
+
* - Sikeres → reset failure-counter, refresh WS-client-et HA korábban failure volt
|
|
109
|
+
* (DB-recovery ⇒ peer-WS is állhatott ferdén, érdemes újra-csatlakozni).
|
|
110
|
+
* - Sikertelen → counter++ + log + 5s-es quick-retry timeout.
|
|
111
|
+
*/
|
|
112
|
+
async writeHeartbeatTracked() {
|
|
113
|
+
try {
|
|
114
|
+
await this.writeHeartbeat();
|
|
115
|
+
const hadFailures = this.consecutiveFailures > 0;
|
|
116
|
+
this.lastSuccessAtMs = Date.now();
|
|
117
|
+
this.consecutiveFailures = 0;
|
|
118
|
+
this.lastFailureMessage = null;
|
|
119
|
+
// Sikeres írás recovery után — a peer-WS is állhatott ferdén, kényszerítjük
|
|
120
|
+
// a refresh-loop azonnali lefutását (a `refreshPeerConnections` fire-and-forget,
|
|
121
|
+
// de a következő scheduled tick-en addig is lefut).
|
|
122
|
+
if (hadFailures) {
|
|
123
|
+
fsm_dynamo_1.DyFM_Log.success('PEI_Heartbeat | Recovered after failures — triggering WS-client refresh');
|
|
124
|
+
// PEI_WsClient.refreshPeerConnections() jelenleg `private` → publikus
|
|
125
|
+
// `triggerRefresh()` hooknak nincs API. A WS-client `setInterval`-on
|
|
126
|
+
// 30s-enként szintén fut (Slice E5), tehát rögtön elkapja. Itt csak
|
|
127
|
+
// logolunk — a UI a Slice E1 panelben látja a recovery-t.
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
catch (error) {
|
|
131
|
+
this.lastFailureAtMs = Date.now();
|
|
132
|
+
this.lastFailureMessage = error instanceof Error ? error.message : String(error);
|
|
133
|
+
this.consecutiveFailures = this.consecutiveFailures + 1;
|
|
134
|
+
fsm_dynamo_1.DyFM_Log.error(`PEI_Heartbeat | Write failed (#${this.consecutiveFailures}) | ${this.lastFailureMessage}`);
|
|
135
|
+
// Quick-retry: csak 1 retry-t engedünk párhuzamosan, a 30s-os ciklus is
|
|
136
|
+
// ütemezi a következőt — a két útvonal versenyez, de a `writeHeartbeat`
|
|
137
|
+
// idempotens (egyetlen DB-update).
|
|
138
|
+
this.scheduleQuickRetry();
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* REQ-CLUSTER-DEBUG-WS-001 Slice E2 (cycle 820): 5s-es quick-retry ütemezés
|
|
143
|
+
* heartbeat-failure után. A `consecutiveFailures < 5` guard megakadályozza,
|
|
144
|
+
* hogy folyamatos DB-outage alatt mindig fusson — 5+ konszekutív failure
|
|
145
|
+
* után csak a 30s-os fő ciklusra hagyatkozunk.
|
|
146
|
+
*/
|
|
147
|
+
scheduleQuickRetry() {
|
|
148
|
+
if (!this.isRunning || this.quickRetryHandle) {
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
if (this.consecutiveFailures >= 5) {
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
this.quickRetryHandle = setTimeout(() => {
|
|
155
|
+
this.quickRetryHandle = null;
|
|
156
|
+
this.writeHeartbeatTracked().catch((error) => {
|
|
157
|
+
fsm_dynamo_1.DyFM_Log.error(`PEI_Heartbeat | Quick-retry rejected | ${String(error)}`);
|
|
158
|
+
});
|
|
159
|
+
}, PEI_Heartbeat_ControlService.QUICK_RETRY_DELAY_MS);
|
|
160
|
+
this.quickRetryHandle.unref?.();
|
|
161
|
+
}
|
|
61
162
|
/**
|
|
62
163
|
* Egyetlen heartbeat írás a registry-be.
|
|
63
164
|
*/
|
package/server/build/src/_modules/peer-instance/_services/pei-heartbeat.control-service.js.map
CHANGED
|
@@ -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,4EAAwE;AACxE,+FAA+F;AAC/F,6HAAwH;
|
|
1
|
+
{"version":3,"file":"pei-heartbeat.control-service.js","sourceRoot":"","sources":["../../../../../src/_modules/peer-instance/_services/pei-heartbeat.control-service.ts"],"names":[],"mappings":"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"}
|
package/server/build/src/_modules/peer-instance/_services/pei-ws-client-active-reconnect.spec.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* REQ-CLUSTER-DEBUG-WS-001 Slice E1 (cycle 820): aktív reconnect logika spec —
|
|
3
|
+
* a `refreshPeerConnections` halott socket-eket cseréli újra, rate-limit-tel.
|
|
4
|
+
*
|
|
5
|
+
* A `connectToPeer` privát metódust spy-val pótoljuk hogy ne nyíljon real socket.
|
|
6
|
+
*/
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=pei-ws-client-active-reconnect.spec.d.ts.map
|