@futdevpro/ccap 1.1.3107 → 1.1.3125

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 (185) hide show
  1. package/cli/build/_commands/update.spec.d.ts +17 -0
  2. package/cli/build/_commands/update.spec.d.ts.map +1 -0
  3. package/cli/build/_commands/update.spec.js +147 -0
  4. package/cli/build/_commands/update.spec.js.map +1 -0
  5. package/client-dist/{agent-instances.module-X7PTNXBZ.js → agent-instances.module-3N6ANN67.js} +2 -2
  6. package/client-dist/ca.module-VKQKP6JP.js +5 -0
  7. package/client-dist/{ca.module-AHEFH36G.js.map → ca.module-VKQKP6JP.js.map} +3 -3
  8. package/client-dist/{cc-usage-dashboard.component-SCGVU2CH.js → cc-usage-dashboard.component-65FF5SWE.js} +2 -2
  9. package/client-dist/{cc.module-HRE2USKF.js → cc.module-BKTAO4S7.js} +2 -2
  10. package/client-dist/{chunk-5F7AZMBN.js → chunk-34ASVWQQ.js} +2 -2
  11. package/client-dist/{chunk-Q6LBW5ZA.js → chunk-3BIY7XPG.js} +2 -2
  12. package/client-dist/{chunk-H4QUFYYO.js → chunk-3EWLYCQY.js} +2 -2
  13. package/client-dist/{chunk-3VGB3L3K.js → chunk-45RYGYWU.js} +2 -2
  14. package/client-dist/{chunk-AIFKGWGZ.js → chunk-46VCON6Y.js} +2 -2
  15. package/client-dist/{chunk-ADOCMVHI.js → chunk-4EPTK7TX.js} +2 -2
  16. package/client-dist/{chunk-725PEGTE.js → chunk-57RF5FWV.js} +2 -2
  17. package/client-dist/{chunk-4Y3YU4VV.js → chunk-6NAFJLV5.js} +2 -2
  18. package/client-dist/{chunk-7BGF556S.js → chunk-7ELFOHXT.js} +2 -2
  19. package/client-dist/{chunk-F5YM4CH2.js → chunk-7UGLDNS5.js} +2 -2
  20. package/client-dist/{chunk-PCZCJ5US.js → chunk-A7WV3WRL.js} +2 -2
  21. package/client-dist/{chunk-M744VRDZ.js → chunk-AELBVLTQ.js} +2 -2
  22. package/client-dist/{chunk-HVEG7TDX.js → chunk-ALT4GOBR.js} +2 -2
  23. package/client-dist/{chunk-IJNLP24O.js → chunk-BSZUQJTF.js} +2 -2
  24. package/client-dist/{chunk-VVP5QPE2.js → chunk-C5SDBZ5G.js} +2 -2
  25. package/client-dist/{chunk-V3MC6IHV.js → chunk-C5WLCPTP.js} +2 -2
  26. package/client-dist/{chunk-BR2OEH55.js → chunk-DBF3SSPS.js} +2 -2
  27. package/client-dist/{chunk-M7XR4RHP.js → chunk-EHNLVVAY.js} +2 -2
  28. package/client-dist/{chunk-44B4MFA2.js → chunk-ES7OKROB.js} +2 -2
  29. package/client-dist/{chunk-IJZYOGOA.js → chunk-EUAB5X46.js} +2 -2
  30. package/client-dist/{chunk-QMSWKCFN.js → chunk-FIPZN6Q5.js} +2 -2
  31. package/client-dist/{chunk-3MGMSCZJ.js → chunk-FXN33EYC.js} +2 -2
  32. package/client-dist/chunk-HTF2IFDS.js +9 -0
  33. package/client-dist/chunk-HTF2IFDS.js.map +7 -0
  34. package/client-dist/{chunk-EDPWSLEJ.js → chunk-IA2MKRM5.js} +2 -2
  35. package/client-dist/{chunk-YKD7EBRH.js → chunk-IRCYROGT.js} +2 -2
  36. package/client-dist/{chunk-ZWO7VQQ7.js → chunk-KBLPP6PQ.js} +2 -2
  37. package/client-dist/{chunk-TAHRBJO4.js → chunk-MANX3UTJ.js} +2 -2
  38. package/client-dist/{chunk-DBG24LL5.js → chunk-NAHXFBXE.js} +2 -2
  39. package/client-dist/{chunk-HRRC3NLD.js → chunk-NJPJYDH6.js} +2 -2
  40. package/client-dist/{chunk-UT4EWNR6.js → chunk-NK4RLW4D.js} +2 -2
  41. package/client-dist/{chunk-EXMVCGPU.js → chunk-OZHMTJQJ.js} +2 -2
  42. package/client-dist/{chunk-SIEB5UUT.js → chunk-PATTK77E.js} +2 -2
  43. package/client-dist/{chunk-P5R6KXHA.js → chunk-PN5J6JP2.js} +2 -2
  44. package/client-dist/{chunk-U5G7I3PM.js → chunk-Q4Z4WTJ3.js} +2 -2
  45. package/client-dist/{chunk-QUNT2WPJ.js → chunk-QXM45TNB.js} +2 -2
  46. package/client-dist/{chunk-QUNT2WPJ.js.map → chunk-QXM45TNB.js.map} +1 -1
  47. package/client-dist/{chunk-SNGOTGBU.js → chunk-R5DCGGN5.js} +2 -2
  48. package/client-dist/{chunk-VPICQREQ.js → chunk-RO7BDRAB.js} +2 -2
  49. package/client-dist/{chunk-772D5UCV.js → chunk-RVZXTBBM.js} +2 -2
  50. package/client-dist/{chunk-SNX7UMSC.js → chunk-SC33BNLI.js} +2 -2
  51. package/client-dist/{chunk-2VC36Y3F.js → chunk-TCJ6WHLQ.js} +2 -2
  52. package/client-dist/{chunk-IUYZZJPL.js → chunk-TDVYMNCA.js} +2 -2
  53. package/client-dist/{chunk-N5BAPGOD.js → chunk-TU3VH4LZ.js} +2 -2
  54. package/client-dist/{chunk-HBLLM4VT.js → chunk-TWWHZRZD.js} +2 -2
  55. package/client-dist/{chunk-I2YW2Q64.js → chunk-UCATC7Y7.js} +2 -2
  56. package/client-dist/{chunk-GNGMQVNJ.js → chunk-UOOILECA.js} +2 -2
  57. package/client-dist/{chunk-NV7A2WEG.js → chunk-V46EMM4L.js} +2 -2
  58. package/client-dist/{chunk-TMZGSFBR.js → chunk-VM6JI2LV.js} +2 -2
  59. package/client-dist/{chunk-V2FE4UOS.js → chunk-WJTUNKFF.js} +2 -2
  60. package/client-dist/{chunk-H4KPNX6Y.js → chunk-WV4WOPQF.js} +2 -2
  61. package/client-dist/{chunk-GXH7TFVW.js → chunk-WWJB3AHB.js} +2 -2
  62. package/client-dist/{chunk-ODUTF4DP.js → chunk-XEGOHOPX.js} +2 -2
  63. package/client-dist/{chunk-RQ6URMIS.js → chunk-XRPVTKIP.js} +2 -2
  64. package/client-dist/{chunk-SREAQBYG.js → chunk-YIVWQSH4.js} +2 -2
  65. package/client-dist/{chunk-276XBODW.js → chunk-YPFW4KUX.js} +7 -7
  66. package/client-dist/chunk-YPFW4KUX.js.map +7 -0
  67. package/client-dist/{chunk-6ZYILL36.js → chunk-ZGNVQEFP.js} +2 -2
  68. package/client-dist/{chunk-LJ75BUDR.js → chunk-ZLSL5N3C.js} +2 -2
  69. package/client-dist/{consultant.module-VWZJPZLC.js → consultant.module-5G73QF4O.js} +2 -2
  70. package/client-dist/{crd.module-X4AZNBU3.js → crd.module-PF5ZYSFN.js} +2 -2
  71. package/client-dist/{dashboard.module-D6GYQMRW.js → dashboard.module-QIH6EALQ.js} +2 -2
  72. package/client-dist/{do.module-NDH2JFRB.js → do.module-IZT2TG65.js} +2 -2
  73. package/client-dist/{document-library.module-U4UF7O2G.js → document-library.module-OC3PF44G.js} +2 -2
  74. package/client-dist/{embedding-eval.module-WU52AOFQ.js → embedding-eval.module-FXSI4XED.js} +2 -2
  75. package/client-dist/{embedding-registry.module-HL4BYCBG.js → embedding-registry.module-W65CI3YZ.js} +2 -2
  76. package/client-dist/{err.module-MKHC7PNL.js → err.module-34QTGFAO.js} +2 -2
  77. package/client-dist/{feedback.module-JVEP7FXN.js → feedback.module-LWOMLYP2.js} +2 -2
  78. package/client-dist/{host-runtime-mcp.module-TAQMHWZY.js → host-runtime-mcp.module-4GXDHVJV.js} +2 -2
  79. package/client-dist/index.html +1 -1
  80. package/client-dist/{live-dev-pipeline.module-PA6JFTVM.js → live-dev-pipeline.module-KB44IF3A.js} +2 -2
  81. package/client-dist/{logs.module-DDCOUURP.js → logs.module-S6JGYNTG.js} +2 -2
  82. package/client-dist/{main-F237R7CH.js → main-KV4C3EP5.js} +3 -3
  83. package/client-dist/{master-control-remote-poc.module-OHIGJKXS.js → master-control-remote-poc.module-HSWDJ7AR.js} +2 -2
  84. package/client-dist/{mobile-app.module-USJXPWGU.js → mobile-app.module-CPULBFKG.js} +2 -2
  85. package/client-dist/{model-registry.module-GN625AEU.js → model-registry.module-SCIPNUN7.js} +2 -2
  86. package/client-dist/{oc.module-T4NESJ3J.js → oc.module-7SUQHFMM.js} +3 -3
  87. package/client-dist/{oc.module-T4NESJ3J.js.map → oc.module-7SUQHFMM.js.map} +3 -3
  88. package/client-dist/{orc.module-7OMMUAVJ.js → orc.module-UOTIRJKH.js} +2 -2
  89. package/client-dist/{project-management.module-BUQ4WMDF.js → project-management.module-SXG557HP.js} +2 -2
  90. package/client-dist/project-source-routed.module-JLUP6FXQ.js +2 -0
  91. package/client-dist/{scheduler.module-426MNXRU.js → scheduler.module-EED4H4OV.js} +2 -2
  92. package/client-dist/{session.module-AOUHRRCF.js → session.module-R4NYRIWY.js} +2 -2
  93. package/client-dist/{set.module-WTQQZANN.js → set.module-ZWXJCTIC.js} +2 -2
  94. package/client-dist/{setup.module-BYCCCF4Q.js → setup.module-STH35LIH.js} +2 -2
  95. package/client-dist/{terminals.module-7X5GXSDY.js → terminals.module-SZPN4HFG.js} +2 -2
  96. package/client-dist/{voice-notes-poc.module-ZZD3NWJE.js → voice-notes-poc.module-DSCGKJMG.js} +2 -2
  97. package/client-dist/{wfs.module-VFUPP5VV.js → wfs.module-CNAZGEUO.js} +2 -2
  98. package/package.json +1 -1
  99. package/client-dist/ca.module-AHEFH36G.js +0 -5
  100. package/client-dist/chunk-276XBODW.js.map +0 -7
  101. package/client-dist/chunk-UEPFY6HU.js +0 -9
  102. package/client-dist/chunk-UEPFY6HU.js.map +0 -7
  103. package/client-dist/project-source-routed.module-HBMJJWHZ.js +0 -2
  104. /package/client-dist/{agent-instances.module-X7PTNXBZ.js.map → agent-instances.module-3N6ANN67.js.map} +0 -0
  105. /package/client-dist/{cc-usage-dashboard.component-SCGVU2CH.js.map → cc-usage-dashboard.component-65FF5SWE.js.map} +0 -0
  106. /package/client-dist/{cc.module-HRE2USKF.js.map → cc.module-BKTAO4S7.js.map} +0 -0
  107. /package/client-dist/{chunk-5F7AZMBN.js.map → chunk-34ASVWQQ.js.map} +0 -0
  108. /package/client-dist/{chunk-Q6LBW5ZA.js.map → chunk-3BIY7XPG.js.map} +0 -0
  109. /package/client-dist/{chunk-H4QUFYYO.js.map → chunk-3EWLYCQY.js.map} +0 -0
  110. /package/client-dist/{chunk-3VGB3L3K.js.map → chunk-45RYGYWU.js.map} +0 -0
  111. /package/client-dist/{chunk-AIFKGWGZ.js.map → chunk-46VCON6Y.js.map} +0 -0
  112. /package/client-dist/{chunk-ADOCMVHI.js.map → chunk-4EPTK7TX.js.map} +0 -0
  113. /package/client-dist/{chunk-725PEGTE.js.map → chunk-57RF5FWV.js.map} +0 -0
  114. /package/client-dist/{chunk-4Y3YU4VV.js.map → chunk-6NAFJLV5.js.map} +0 -0
  115. /package/client-dist/{chunk-7BGF556S.js.map → chunk-7ELFOHXT.js.map} +0 -0
  116. /package/client-dist/{chunk-F5YM4CH2.js.map → chunk-7UGLDNS5.js.map} +0 -0
  117. /package/client-dist/{chunk-PCZCJ5US.js.map → chunk-A7WV3WRL.js.map} +0 -0
  118. /package/client-dist/{chunk-M744VRDZ.js.map → chunk-AELBVLTQ.js.map} +0 -0
  119. /package/client-dist/{chunk-HVEG7TDX.js.map → chunk-ALT4GOBR.js.map} +0 -0
  120. /package/client-dist/{chunk-IJNLP24O.js.map → chunk-BSZUQJTF.js.map} +0 -0
  121. /package/client-dist/{chunk-VVP5QPE2.js.map → chunk-C5SDBZ5G.js.map} +0 -0
  122. /package/client-dist/{chunk-V3MC6IHV.js.map → chunk-C5WLCPTP.js.map} +0 -0
  123. /package/client-dist/{chunk-BR2OEH55.js.map → chunk-DBF3SSPS.js.map} +0 -0
  124. /package/client-dist/{chunk-M7XR4RHP.js.map → chunk-EHNLVVAY.js.map} +0 -0
  125. /package/client-dist/{chunk-44B4MFA2.js.map → chunk-ES7OKROB.js.map} +0 -0
  126. /package/client-dist/{chunk-IJZYOGOA.js.map → chunk-EUAB5X46.js.map} +0 -0
  127. /package/client-dist/{chunk-QMSWKCFN.js.map → chunk-FIPZN6Q5.js.map} +0 -0
  128. /package/client-dist/{chunk-3MGMSCZJ.js.map → chunk-FXN33EYC.js.map} +0 -0
  129. /package/client-dist/{chunk-EDPWSLEJ.js.map → chunk-IA2MKRM5.js.map} +0 -0
  130. /package/client-dist/{chunk-YKD7EBRH.js.map → chunk-IRCYROGT.js.map} +0 -0
  131. /package/client-dist/{chunk-ZWO7VQQ7.js.map → chunk-KBLPP6PQ.js.map} +0 -0
  132. /package/client-dist/{chunk-TAHRBJO4.js.map → chunk-MANX3UTJ.js.map} +0 -0
  133. /package/client-dist/{chunk-DBG24LL5.js.map → chunk-NAHXFBXE.js.map} +0 -0
  134. /package/client-dist/{chunk-HRRC3NLD.js.map → chunk-NJPJYDH6.js.map} +0 -0
  135. /package/client-dist/{chunk-UT4EWNR6.js.map → chunk-NK4RLW4D.js.map} +0 -0
  136. /package/client-dist/{chunk-EXMVCGPU.js.map → chunk-OZHMTJQJ.js.map} +0 -0
  137. /package/client-dist/{chunk-SIEB5UUT.js.map → chunk-PATTK77E.js.map} +0 -0
  138. /package/client-dist/{chunk-P5R6KXHA.js.map → chunk-PN5J6JP2.js.map} +0 -0
  139. /package/client-dist/{chunk-U5G7I3PM.js.map → chunk-Q4Z4WTJ3.js.map} +0 -0
  140. /package/client-dist/{chunk-SNGOTGBU.js.map → chunk-R5DCGGN5.js.map} +0 -0
  141. /package/client-dist/{chunk-VPICQREQ.js.map → chunk-RO7BDRAB.js.map} +0 -0
  142. /package/client-dist/{chunk-772D5UCV.js.map → chunk-RVZXTBBM.js.map} +0 -0
  143. /package/client-dist/{chunk-SNX7UMSC.js.map → chunk-SC33BNLI.js.map} +0 -0
  144. /package/client-dist/{chunk-2VC36Y3F.js.map → chunk-TCJ6WHLQ.js.map} +0 -0
  145. /package/client-dist/{chunk-IUYZZJPL.js.map → chunk-TDVYMNCA.js.map} +0 -0
  146. /package/client-dist/{chunk-N5BAPGOD.js.map → chunk-TU3VH4LZ.js.map} +0 -0
  147. /package/client-dist/{chunk-HBLLM4VT.js.map → chunk-TWWHZRZD.js.map} +0 -0
  148. /package/client-dist/{chunk-I2YW2Q64.js.map → chunk-UCATC7Y7.js.map} +0 -0
  149. /package/client-dist/{chunk-GNGMQVNJ.js.map → chunk-UOOILECA.js.map} +0 -0
  150. /package/client-dist/{chunk-NV7A2WEG.js.map → chunk-V46EMM4L.js.map} +0 -0
  151. /package/client-dist/{chunk-TMZGSFBR.js.map → chunk-VM6JI2LV.js.map} +0 -0
  152. /package/client-dist/{chunk-V2FE4UOS.js.map → chunk-WJTUNKFF.js.map} +0 -0
  153. /package/client-dist/{chunk-H4KPNX6Y.js.map → chunk-WV4WOPQF.js.map} +0 -0
  154. /package/client-dist/{chunk-GXH7TFVW.js.map → chunk-WWJB3AHB.js.map} +0 -0
  155. /package/client-dist/{chunk-ODUTF4DP.js.map → chunk-XEGOHOPX.js.map} +0 -0
  156. /package/client-dist/{chunk-RQ6URMIS.js.map → chunk-XRPVTKIP.js.map} +0 -0
  157. /package/client-dist/{chunk-SREAQBYG.js.map → chunk-YIVWQSH4.js.map} +0 -0
  158. /package/client-dist/{chunk-6ZYILL36.js.map → chunk-ZGNVQEFP.js.map} +0 -0
  159. /package/client-dist/{chunk-LJ75BUDR.js.map → chunk-ZLSL5N3C.js.map} +0 -0
  160. /package/client-dist/{consultant.module-VWZJPZLC.js.map → consultant.module-5G73QF4O.js.map} +0 -0
  161. /package/client-dist/{crd.module-X4AZNBU3.js.map → crd.module-PF5ZYSFN.js.map} +0 -0
  162. /package/client-dist/{dashboard.module-D6GYQMRW.js.map → dashboard.module-QIH6EALQ.js.map} +0 -0
  163. /package/client-dist/{do.module-NDH2JFRB.js.map → do.module-IZT2TG65.js.map} +0 -0
  164. /package/client-dist/{document-library.module-U4UF7O2G.js.map → document-library.module-OC3PF44G.js.map} +0 -0
  165. /package/client-dist/{embedding-eval.module-WU52AOFQ.js.map → embedding-eval.module-FXSI4XED.js.map} +0 -0
  166. /package/client-dist/{embedding-registry.module-HL4BYCBG.js.map → embedding-registry.module-W65CI3YZ.js.map} +0 -0
  167. /package/client-dist/{err.module-MKHC7PNL.js.map → err.module-34QTGFAO.js.map} +0 -0
  168. /package/client-dist/{feedback.module-JVEP7FXN.js.map → feedback.module-LWOMLYP2.js.map} +0 -0
  169. /package/client-dist/{host-runtime-mcp.module-TAQMHWZY.js.map → host-runtime-mcp.module-4GXDHVJV.js.map} +0 -0
  170. /package/client-dist/{live-dev-pipeline.module-PA6JFTVM.js.map → live-dev-pipeline.module-KB44IF3A.js.map} +0 -0
  171. /package/client-dist/{logs.module-DDCOUURP.js.map → logs.module-S6JGYNTG.js.map} +0 -0
  172. /package/client-dist/{main-F237R7CH.js.map → main-KV4C3EP5.js.map} +0 -0
  173. /package/client-dist/{master-control-remote-poc.module-OHIGJKXS.js.map → master-control-remote-poc.module-HSWDJ7AR.js.map} +0 -0
  174. /package/client-dist/{mobile-app.module-USJXPWGU.js.map → mobile-app.module-CPULBFKG.js.map} +0 -0
  175. /package/client-dist/{model-registry.module-GN625AEU.js.map → model-registry.module-SCIPNUN7.js.map} +0 -0
  176. /package/client-dist/{orc.module-7OMMUAVJ.js.map → orc.module-UOTIRJKH.js.map} +0 -0
  177. /package/client-dist/{project-management.module-BUQ4WMDF.js.map → project-management.module-SXG557HP.js.map} +0 -0
  178. /package/client-dist/{project-source-routed.module-HBMJJWHZ.js.map → project-source-routed.module-JLUP6FXQ.js.map} +0 -0
  179. /package/client-dist/{scheduler.module-426MNXRU.js.map → scheduler.module-EED4H4OV.js.map} +0 -0
  180. /package/client-dist/{session.module-AOUHRRCF.js.map → session.module-R4NYRIWY.js.map} +0 -0
  181. /package/client-dist/{set.module-WTQQZANN.js.map → set.module-ZWXJCTIC.js.map} +0 -0
  182. /package/client-dist/{setup.module-BYCCCF4Q.js.map → setup.module-STH35LIH.js.map} +0 -0
  183. /package/client-dist/{terminals.module-7X5GXSDY.js.map → terminals.module-SZPN4HFG.js.map} +0 -0
  184. /package/client-dist/{voice-notes-poc.module-ZZD3NWJE.js.map → voice-notes-poc.module-DSCGKJMG.js.map} +0 -0
  185. /package/client-dist/{wfs.module-VFUPP5VV.js.map → wfs.module-CNAZGEUO.js.map} +0 -0
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["src/app/_modules/external-sessions/_modules/openclaw/_services/openclaw.data-service.ts", "src/app/_collections/oc/ccap-oc-gateway-timestamp.util.ts", "src/app/_collections/oc/ccap-oc-gateway-list.util.ts", "src/app/_modules/external-sessions/_modules/openclaw/_services/openclaw.api-service.ts"],
4
- "sourcesContent": ["import { inject, Injectable, NgZone, OnDestroy, signal } from '@angular/core';\n\nimport { Subscription } from 'rxjs';\n\nimport { DyFM_Log, second } from '@futdevpro/fsm-dynamo';\n\nimport { CCAP_OcGatewaySessionList_Util } from '../../../../../_collections/oc/ccap-oc-gateway-list.util';\nimport { CCAP_OcGatewayTimestamp_Util } from '../../../../../_collections/oc/ccap-oc-gateway-timestamp.util';\nimport {\n Oc_GatewaySessionsFetch_Interface,\n Oc_ListItem_Interface,\n Oc_EventItem_Interface,\n Oc_Detail_Response,\n} from '../_models/interfaces/oc-list-item.interface';\nimport { CCAP_ErrorDisplay_Util } from '../../../../../_collections/error/error-display.util';\nimport { Openclaw_ApiService } from './openclaw.api-service';\nimport { ExS_Message_ApiService } from '../../../_services/exs-message.api-service';\nimport { CCAP_GlobalError_ControlService } from '../../../../../_services/control-services/ccap-global-error.control-service';\nimport { CCAP_Socket_ControlService } from '../../../../../_services/control-services/ccap-socket.control-service';\nimport { CCAP_ExtSessionMessage_Response } from '../../../../../_models/interfaces/shared/ccap-ext-message.interface';\nimport {\n OcSessionConsoleMessage_Interface,\n OcSessionUsage_Interface,\n} from './oc.data-service.interface';\n\n/**\n * OpenClaw Session Toolkit data service (SSOT).\n * Reactive state management: session lista, detail, events, live output.\n * Socket.io event subscription a real-time push-hoz.\n */\n@Injectable({ providedIn: 'root' })\nexport class Openclaw_DataService implements OnDestroy {\n\n /** Session lista. */\n readonly sessions_$ = signal<Oc_ListItem_Interface[]>([]);\n\n /** Session lista betöltés folyamatban. */\n readonly sessionsLoading_$ = signal<boolean>(false);\n\n /** Session lista hiba. */\n readonly sessionsLoadError_$ = signal<unknown | null>(null);\n\n /** Kiválasztott session részletek. */\n readonly selectedSession_$ = signal<Oc_Detail_Response | null>(null);\n\n /** Kiválasztott session betöltés. */\n readonly selectedSessionLoading_$ = signal<boolean>(false);\n\n /** Kiválasztott session event log. */\n readonly selectedSessionEvents_$ = signal<Oc_EventItem_Interface[]>([]);\n\n /** Console rendszer-üzenetek (prompt echo, status change, error feedback). */\n readonly consoleMessages_$ = signal<OcSessionConsoleMessage_Interface[]>([]);\n\n /** Szerver-oldali assembled messages (SSOT). */\n readonly assembledMessages_$ = signal<CCAP_ExtSessionMessage_Response[]>([]);\n\n /** Utolsó status update a socket-ről. */\n readonly lastStatusUpdate_$ = signal<{\n sessionId: string;\n status: string;\n statusMessage?: string;\n } | null>(null);\n\n /** Kumulatív token usage az aktív session-höz. */\n readonly sessionUsage_$ = signal<OcSessionUsage_Interface>({\n inputTokens: 0,\n outputTokens: 0,\n costUsd: 0,\n });\n\n /** Aktuálisan kiválasztott session ID (a detail nézet állítja be). */\n readonly activeSessionId_$ = signal<string>('');\n\n /** Aktuálisan kiválasztott OpenClaw instance ID (a dashboard állítja be). */\n readonly activeInstanceId_$ = signal<string>('');\n\n /** Aktív gateway szűrő: csak az adott gatewayUrl-hez tartozó session-ök (null = összes). */\n readonly gatewayFilter_$ = signal<string | null>(null);\n\n private readonly extSessionMsg_AS: ExS_Message_ApiService =\n inject(ExS_Message_ApiService);\n private readonly ocSession_AS: Openclaw_ApiService =\n inject(Openclaw_ApiService);\n\n private readonly globalError_CS: CCAP_GlobalError_ControlService =\n inject(CCAP_GlobalError_ControlService);\n\n private readonly socket_CS: CCAP_Socket_ControlService =\n inject(CCAP_Socket_ControlService);\n\n private readonly ngZone: NgZone = inject(NgZone);\n\n private eventSubscription: Subscription | null = null;\n\n /** Socket reconnect subscription (backfill trigger). */\n private reconnectSubscription: Subscription | null = null;\n\n /** Legutolsó ismert event sequence szám (duplikáció elkerüléséhez). */\n private lastKnownEventSequence: number = -1;\n\n /** Chat history polling timer handle. */\n private chatPollHandle: ReturnType<typeof setInterval> | null = null;\n\n /** Session detail (REST) polling — metadata panel frissítése gateway mód mellett. */\n private detailPollHandle: ReturnType<typeof setInterval> | null = null;\n\n /**\n * Gateway history fingerprint az utolsó poll / initial load után (tartalom + méret változás\n * detektálása, nem csak üzenetszám).\n */\n private lastPolledHistoryFingerprint: string = '';\n\n constructor() {\n // Socket event-ek feliratkozása\n this.eventSubscription = this.socket_CS.event$.subscribe(\n (envelope: { event: string; payload: Record<string, unknown> }): void => {\n this.handleSocketEvent(envelope);\n },\n );\n\n // Socket reconnect → resubscribe + backfill\n this.reconnectSubscription = this.socket_CS.connected$.subscribe(\n (isConnected: boolean): void => {\n if (isConnected) {\n const activeId: string = this.activeSessionId_$();\n if (activeId) {\n this.socket_CS.emit('oc-session:subscribe', { sessionId: activeId });\n // Assembled messages újratöltése — a disconnect alatt érkezett socket push-ok\n // (ext-session-msg:message/update) elvesztek; a REST reload pótolja őket.\n this.loadAssembledMessages({ sessionId: activeId }).catch((): void => {});\n }\n this.backfillMissedEvents();\n }\n },\n );\n }\n\n ngOnDestroy(): void {\n this.stopChatPolling();\n if (this.eventSubscription) {\n this.eventSubscription.unsubscribe();\n this.eventSubscription = null;\n }\n if (this.reconnectSubscription) {\n this.reconnectSubscription.unsubscribe();\n this.reconnectSubscription = null;\n }\n }\n\n // ── Session Lista ───────────────────────────────────────────\n\n /**\n * Session lista betöltése a szerverről.\n */\n /**\n * Gateway szűrő beállítása — frissíti a session listát.\n */\n setGatewayFilter(gatewayUrl: string | null): void {\n this.gatewayFilter_$.set(gatewayUrl);\n this.loadSessions().catch((): void => {});\n }\n\n /**\n * Gateway szűrő beállítása session lista újratöltés nélkül.\n * A hívó felelős a loadSessions explicit hívásáért (dupla load elkerülése).\n */\n setGatewayFilterOnly(gatewayUrl: string | null): void {\n this.gatewayFilter_$.set(gatewayUrl);\n }\n\n async loadSessions(params?: {\n status?: string;\n workspacePath?: string;\n includeArchived?: boolean;\n }): Promise<void> {\n this.sessionsLoading_$.set(true);\n this.sessionsLoadError_$.set(null);\n\n try {\n const response = await this.ocSession_AS.listSessions({\n status: params?.status,\n workspacePath: params?.workspacePath,\n gatewayUrl: this.gatewayFilter_$() ?? undefined,\n includeArchived: params?.includeArchived,\n });\n\n // Rendezés: legfrissebb session legfelül (lastActivityAt desc)\n const sorted: Oc_ListItem_Interface[] = [...response.sessions].sort(\n (a: Oc_ListItem_Interface, b: Oc_ListItem_Interface): number => {\n const dateA: number = a.lastActivityAt ? new Date(a.lastActivityAt).getTime() : 0;\n const dateB: number = b.lastActivityAt ? new Date(b.lastActivityAt).getTime() : 0;\n return dateB - dateA;\n },\n );\n this.sessions_$.set(sorted);\n } catch (err: unknown) {\n this.sessionsLoadError_$.set(err);\n this.pushConsoleMessage({\n type: 'error',\n text: `Load sessions failed: ${CCAP_ErrorDisplay_Util.getErrorMessageForDisplay(err)}`,\n });\n } finally {\n this.sessionsLoading_$.set(false);\n }\n }\n\n /**\n * Gateway session lista lekérése — nincs loading/console mellékhatás (Dark Office OCI enrich, tesztek).\n * A normalizált lista és a nyers sorok ugyanabból a válaszból készülnek (mapper SSOT).\n */\n async fetchGatewaySessionsForInstance(params: {\n instanceId: string;\n }): Promise<Oc_GatewaySessionsFetch_Interface> {\n const response = await this.ocSession_AS.listGatewaySessions({\n instanceId: params.instanceId,\n });\n return CCAP_OcGatewaySessionList_Util.buildGatewaySessionsFetch({ response: response });\n }\n\n /**\n * Session lista betöltése közvetlenül a gateway-ről (SSOT).\n * Az OpenClaw gateway a sessions_list RPC-n adja vissza az aktív session-öket.\n */\n async loadGatewaySessions(params: { instanceId: string }): Promise<void> {\n this.sessionsLoading_$.set(true);\n this.sessionsLoadError_$.set(null);\n\n try {\n const fetchResult: Oc_GatewaySessionsFetch_Interface =\n await this.fetchGatewaySessionsForInstance({ instanceId: params.instanceId });\n\n // Ha nincs session, diagnosztika\n if (!fetchResult.listItems.length && fetchResult.rawSessions.length > 0) {\n this.pushConsoleMessage({\n type: 'error',\n text: `Gateway returned ${fetchResult.rawSessions.length} sessions but mapping produced 0.\\n`\n + `First session keys: ${fetchResult.firstSessionKeys.join(', ')}`,\n });\n }\n\n this.sessions_$.set(fetchResult.listItems);\n } catch (err: unknown) {\n this.sessionsLoadError_$.set(err);\n this.pushConsoleMessage({\n type: 'error',\n text: `Load gateway sessions failed: ${CCAP_ErrorDisplay_Util.getErrorMessageForDisplay(err)}`,\n });\n } finally {\n this.sessionsLoading_$.set(false);\n }\n }\n\n // ── Session Detail ──────────────────────────────────────────\n\n /**\n * Session részletek betöltése (CCAP REST).\n * `isSilent`: nincs loading flag és poll / háttér-frissítés hibája nem törli a state-et.\n */\n async loadSessionDetail(params: { sessionId: string; isSilent?: boolean }): Promise<void> {\n const isSilent: boolean = params.isSilent === true;\n\n if (!isSilent) {\n this.selectedSessionLoading_$.set(true);\n }\n\n try {\n const response: Oc_Detail_Response =\n await this.ocSession_AS.getSession({\n sessionId: params.sessionId,\n });\n\n this.selectedSession_$.set(response);\n\n // Assembled messages betöltése (SSOT — fire-and-forget)\n this.loadAssembledMessages({ sessionId: params.sessionId })\n .catch((): void => {});\n } catch (err: unknown) {\n if (!isSilent) {\n this.selectedSession_$.set(null);\n const errorMessage: string = err instanceof Error\n ? err.message\n : 'Failed to load session details';\n this.pushConsoleMessage({\n type: 'error',\n text: `Load session failed: ${errorMessage}`,\n });\n }\n } finally {\n if (!isSilent) {\n this.selectedSessionLoading_$.set(false);\n }\n }\n }\n\n /**\n * Session history betöltése közvetlenül a gateway-ről (SSOT).\n * A gateway a chat.history RPC-n adja vissza az üzeneteket.\n */\n async loadGatewaySessionHistory(params: {\n sessionId: string;\n instanceId: string;\n }): Promise<void> {\n this.selectedSessionLoading_$.set(true);\n this.consoleMessages_$.set([]);\n\n try {\n const response = await this.ocSession_AS.getGatewaySessionHistory({\n sessionId: params.sessionId,\n instanceId: params.instanceId,\n });\n\n // Gateway response feldolgozás — a _rawKeys diagnosztikát ad ha a mapping nem talál üzeneteket\n const rawResponse: Record<string, unknown> = response as Record<string, unknown>;\n const rawKeys: string[] = Array.isArray(rawResponse._rawKeys)\n ? rawResponse._rawKeys as string[] : [];\n\n // History üzeneteket console message-ekké alakítjuk a közös parser-rel\n const history: Record<string, unknown>[] = Array.isArray(response.history)\n ? response.history : [];\n const messages: OcSessionConsoleMessage_Interface[] = this.parseGatewayHistory(history);\n\n const gatewayMessageCount: number = typeof rawResponse.messageCount === 'number'\n ? rawResponse.messageCount as number : 0;\n const firstMessageKeys: string[] = Array.isArray(rawResponse._firstMessageKeys)\n ? rawResponse._firstMessageKeys as string[] : [];\n\n if (messages.length) {\n this.consoleMessages_$.set(messages);\n } else if (gatewayMessageCount > 0) {\n // A gateway-nek van üzenete, de a mapping nem tudta feldolgozni\n this.consoleMessages_$.set([{\n listKey: this.allocateConsoleListKey(),\n type: 'error',\n text: `Gateway session has ${gatewayMessageCount} messages, but mapping failed.\\n`\n + `Message keys: ${firstMessageKeys.join(', ') || 'unknown'}\\n`\n + `Gateway response keys: ${rawKeys.join(', ') || 'none'}`,\n timestamp: new Date().toISOString(),\n }]);\n } else {\n this.consoleMessages_$.set([{\n listKey: this.allocateConsoleListKey(),\n type: 'info',\n text: `Gateway session loaded — session has no messages yet.`,\n timestamp: new Date().toISOString(),\n }]);\n }\n\n // Minimális selectedSession beállítás a UI-nak\n this.selectedSession_$.set({\n session: {\n sessionId: params.sessionId,\n workspacePath: '',\n status: 'unknown',\n promptCount: 0,\n toolCallCount: 0,\n isArchived: false,\n },\n runtime: {\n isLive: false,\n runtimeStatus: null,\n outputBufferLength: 0,\n },\n });\n\n // Chat polling indítása — a gateway SSOT, periodikusan frissítjük a history-t\n this.lastPolledHistoryFingerprint = this.computeGatewayHistoryFingerprint(history);\n this.startChatPolling();\n } catch (err: unknown) {\n this.selectedSession_$.set(null);\n this.pushConsoleMessage({\n type: 'error',\n text: `Load gateway session history failed: ${CCAP_ErrorDisplay_Util.getErrorMessageForDisplay(err)}`,\n });\n } finally {\n this.selectedSessionLoading_$.set(false);\n }\n }\n\n /**\n * Session event log betöltése.\n */\n async loadSessionEvents(params: {\n sessionId: string;\n eventType?: string;\n limit?: number;\n }): Promise<void> {\n try {\n const response = await this.ocSession_AS.getSessionEvents({\n sessionId: params.sessionId,\n eventType: params.eventType,\n limit: params.limit ?? 500,\n latest: true,\n });\n\n this.selectedSessionEvents_$.set(response.events);\n this.updateLastKnownSequence(response.events);\n\n // Historikus event-ek konvertálása console üzenetekké\n for (const event of response.events) {\n this.pushConsoleMessageFromEvent(event);\n }\n } catch (err: unknown) {\n this.selectedSessionEvents_$.set([]);\n this.pushConsoleMessage({\n type: 'error',\n text: `Load events failed: ${CCAP_ErrorDisplay_Util.getErrorMessageForDisplay(err)}`,\n });\n }\n }\n\n // ── Actions ─────────────────────────────────────────────────\n\n /**\n * Új session létrehozása.\n */\n async createSession(params: {\n workspacePath: string;\n label?: string;\n gatewayUrl?: string;\n openclawAgentName?: string;\n initialPrompt?: string;\n mode?: string;\n reasoningEffort?: string;\n }): Promise<string> {\n try {\n const result: { session: Record<string, unknown> } =\n await this.ocSession_AS.createSession(params);\n const sessionId: string = String(result.session.sessionId || '');\n await this.loadSessions();\n return sessionId;\n } catch (err: unknown) {\n this.pushConsoleMessage({\n type: 'error',\n text: `Create session failed: ${CCAP_ErrorDisplay_Util.getErrorMessageForDisplay(err)}`,\n });\n throw err;\n }\n }\n\n /**\n * Prompt küldése.\n */\n async sendPrompt(params: {\n sessionId: string;\n content: string;\n }): Promise<void> {\n // Azonnali prompt echo a chat-be\n this.pushConsoleMessage({\n type: 'prompt',\n text: params.content,\n });\n\n try {\n // Gateway SSOT: ha van aktív instanceId, a gateway-re küldjük\n const instanceId: string = this.activeInstanceId_$();\n if (instanceId) {\n await this.ocSession_AS.sendGatewayPrompt({\n sessionId: params.sessionId,\n instanceId: instanceId,\n content: params.content,\n });\n } else {\n await this.ocSession_AS.sendPrompt(params);\n }\n } catch (err: unknown) {\n this.pushConsoleMessage({\n type: 'error',\n text: `Send failed: ${CCAP_ErrorDisplay_Util.getErrorMessageForDisplay(err)}`,\n });\n throw err;\n }\n }\n\n /**\n * Session reconnect (gateway reconnect).\n */\n async reconnectSession(params: { sessionId: string }): Promise<void> {\n try {\n await this.ocSession_AS.reconnectSession(params);\n await this.loadSessions();\n } catch (err: unknown) {\n this.pushConsoleMessage({\n type: 'error',\n text: `Reconnect failed: ${CCAP_ErrorDisplay_Util.getErrorMessageForDisplay(err)}`,\n });\n throw err;\n }\n }\n\n /**\n * Futó execution leállítása (gateway sessions.abort).\n */\n async stopExecution(params: { sessionId: string }): Promise<void> {\n try {\n await this.ocSession_AS.stopExecution(params);\n } catch (err: unknown) {\n this.pushConsoleMessage({\n type: 'error',\n text: `Stop execution failed: ${CCAP_ErrorDisplay_Util.getErrorMessageForDisplay(err)}`,\n });\n throw err;\n }\n }\n\n /**\n * Session terminate.\n */\n async terminateSession(params: { sessionId: string }): Promise<void> {\n try {\n await this.ocSession_AS.terminateSession(params);\n await this.loadSessions();\n } catch (err: unknown) {\n this.pushConsoleMessage({\n type: 'error',\n text: `Terminate failed: ${CCAP_ErrorDisplay_Util.getErrorMessageForDisplay(err)}`,\n });\n throw err;\n }\n }\n\n /**\n * Session archiválás állapot beállítása.\n */\n async setSessionArchived(params: {\n sessionId: string;\n isArchived: boolean;\n }): Promise<void> {\n try {\n await this.ocSession_AS.setSessionArchived(params);\n await this.loadSessions();\n } catch (err: unknown) {\n this.pushConsoleMessage({\n type: 'error',\n text: `Archive failed: ${CCAP_ErrorDisplay_Util.getErrorMessageForDisplay(err)}`,\n });\n throw err;\n }\n }\n\n /**\n * Session config frissítése (mode, effort, agentName).\n */\n async updateSessionConfig(params: {\n sessionId: string;\n mode?: string;\n reasoningEffort?: string;\n openclawAgentName?: string;\n }): Promise<void> {\n try {\n await this.ocSession_AS.updateSessionConfig(params);\n\n // Lokális state frissítése (selectedSession detail-ban)\n const currentDetail: Oc_Detail_Response | null =\n this.selectedSession_$();\n if (currentDetail?.session.sessionId === params.sessionId) {\n const updatedSession: Oc_ListItem_Interface = {\n ...currentDetail.session,\n };\n if (params.mode != null) {\n updatedSession.mode = params.mode;\n }\n if (params.reasoningEffort != null) {\n updatedSession.reasoningEffort = params.reasoningEffort;\n }\n if (params.openclawAgentName != null) {\n updatedSession.openclawAgentName = params.openclawAgentName;\n }\n this.selectedSession_$.set({\n ...currentDetail,\n session: updatedSession,\n });\n }\n } catch (err: unknown) {\n this.pushConsoleMessage({\n type: 'error',\n text: `Config update failed: ${CCAP_ErrorDisplay_Util.getErrorMessageForDisplay(err)}`,\n });\n throw err;\n }\n }\n\n /**\n * Aktív session ID beállítása (detail nézet hívja navigáláskor).\n * Socket subscribe/unsubscribe: a monitoring service célzott push-hoz.\n */\n setActiveSessionId(sessionId: string): void {\n const previousId: string = this.activeSessionId_$();\n\n if (previousId && previousId !== sessionId) {\n this.socket_CS.emit('oc-session:unsubscribe', { sessionId: previousId });\n }\n\n this.activeSessionId_$.set(sessionId);\n\n if (sessionId) {\n this.socket_CS.emit('oc-session:subscribe', { sessionId: sessionId });\n }\n }\n\n /**\n * Live output és console törlése (pl. új session-re navigáláskor).\n */\n clearLiveOutput(): void {\n this.stopChatPolling();\n this.consoleMessages_$.set([]);\n this.sessionUsage_$.set({\n inputTokens: 0,\n outputTokens: 0,\n costUsd: 0,\n });\n this.lastKnownEventSequence = -1;\n }\n\n /**\n * Egyedi console üzenet kulcs — @for track és stabil diff.\n */\n private allocateConsoleListKey(): string {\n return globalThis.crypto.randomUUID();\n }\n\n /**\n * Console rendszer-üzenet hozzáadása.\n */\n pushConsoleMessage(params: {\n listKey?: string;\n type: OcSessionConsoleMessage_Interface['type'];\n text: string;\n timestamp?: string;\n expandableContent?: string;\n rawData?: Record<string, unknown>;\n }): void {\n const trimmedText: string = (params.type === 'assistant' || params.type === 'prompt')\n ? params.text.trim()\n : params.text;\n const message: OcSessionConsoleMessage_Interface = {\n listKey: params.listKey ?? this.allocateConsoleListKey(),\n type: params.type,\n text: trimmedText,\n timestamp: params.timestamp ?? new Date().toISOString(),\n expandableContent: params.expandableContent,\n rawData: params.rawData,\n };\n const current: OcSessionConsoleMessage_Interface[] = this.consoleMessages_$();\n this.consoleMessages_$.set([...current, message]);\n }\n\n // ── Private: Chat History Polling ────────────────────────────\n\n /** Chat poll intervallum (5 másodperc). */\n private static readonly CHAT_POLL_INTERVAL_MS: number = 5 * second;\n\n /** REST session detail poll intervallum (10 másodperc) — metadata SSOT kiegészítés. */\n private static readonly DETAIL_POLL_INTERVAL_MS: number = 10 * second;\n\n /**\n * Chat history polling indítása.\n * Periodikusan lekérdezi a gateway history-t és frissíti a console-t ha változott a fingerprint.\n * REST detail poll párhuzamosan fut a metadata panelhez.\n */\n startChatPolling(): void {\n this.stopChatPolling();\n this.chatPollHandle = setInterval((): void => {\n void this.pollChatHistory();\n }, Openclaw_DataService.CHAT_POLL_INTERVAL_MS);\n this.detailPollHandle = setInterval((): void => {\n const sid: string = this.activeSessionId_$();\n if (sid) {\n void this.loadSessionDetail({ sessionId: sid, isSilent: true });\n }\n }, Openclaw_DataService.DETAIL_POLL_INTERVAL_MS);\n }\n\n /**\n * Chat history polling leállítása.\n */\n stopChatPolling(): void {\n if (this.chatPollHandle) {\n clearInterval(this.chatPollHandle);\n this.chatPollHandle = null;\n }\n if (this.detailPollHandle) {\n clearInterval(this.detailPollHandle);\n this.detailPollHandle = null;\n }\n this.lastPolledHistoryFingerprint = '';\n }\n\n /**\n * Gateway history snapshot fingerprint — hossz, utolsó üzenet idő / id, tartalom slice.\n * Ugyanannyi üzenet mellett is észleli az utolsó elem tartalom-változását (pl. stream).\n */\n private computeGatewayHistoryFingerprint(history: Record<string, unknown>[]): string {\n const length: number = history.length;\n if (!length) {\n return '0';\n }\n const last: Record<string, unknown> = history[length - 1];\n const idPart: string = typeof last.id === 'string' ? last.id\n : typeof last.messageId === 'string' ? last.messageId : '';\n const tsPart: string = Openclaw_DataService.extractGatewayChatMessageTimestamp(last);\n const body: string = this.extractTextFromMessage(last);\n const sliceMax: number = 400;\n const contentSlice: string = body.length > sliceMax ? body.slice(0, sliceMax) : body;\n return `${length}\\u001f${idPart}\\u001f${tsPart}\\u001f${contentSlice}`;\n }\n\n /**\n * Egyetlen poll ciklus: gateway history lekérdezés + frissítés ha a fingerprint változott.\n */\n private async pollChatHistory(): Promise<void> {\n const sessionId: string = this.activeSessionId_$();\n const instanceId: string = this.activeInstanceId_$();\n if (!sessionId || !instanceId) {\n return;\n }\n\n try {\n const response = await this.ocSession_AS.getGatewaySessionHistory({\n sessionId: sessionId,\n instanceId: instanceId,\n });\n\n const history: Record<string, unknown>[] = Array.isArray(response.history)\n ? response.history : [];\n\n const fingerprint: string = this.computeGatewayHistoryFingerprint(history);\n if (fingerprint === this.lastPolledHistoryFingerprint) {\n return;\n }\n\n this.lastPolledHistoryFingerprint = fingerprint;\n const messages: OcSessionConsoleMessage_Interface[] = this.parseGatewayHistory(history);\n\n this.ngZone.run((): void => {\n this.consoleMessages_$.set(messages);\n });\n } catch {\n // Poll hiba: csendes — nem terhelünk a console-t ismétlődő hibaüzenetekkel\n }\n }\n\n /**\n * Gateway history feldolgozása console message-ekké.\n * Content blocks szétbontás + tool call / tool result párosítás.\n * Két formátum támogatott:\n * 1. Anthropic: content block {type: \"tool_result\", tool_use_id: \"...\"} + content\n * 2. OpenClaw: top-level message {role: \"toolResult\"} — a content-ben text blokkok\n */\n private parseGatewayHistory(\n history: Record<string, unknown>[],\n ): OcSessionConsoleMessage_Interface[] {\n const messages: OcSessionConsoleMessage_Interface[] = [];\n const toolResultMap = new Map<string, string>();\n\n // Gyűjtsük össze a toolCall id-ket sorrendben, hogy a toolResult-okat párosíthassuk\n const toolCallIds: string[] = [];\n for (const msg of history) {\n const rawContent: unknown = msg.content;\n if (!Array.isArray(rawContent)) {\n continue;\n }\n for (const block of rawContent as Record<string, unknown>[]) {\n const btype: string = typeof block.type === 'string' ? block.type : '';\n if (btype === 'tool_use' || btype === 'toolCall') {\n const toolId: string = typeof block.id === 'string' ? block.id : '';\n if (toolId) {\n toolCallIds.push(toolId);\n }\n }\n if (btype === 'tool_result') {\n const toolUseId: string = typeof block.tool_use_id === 'string'\n ? block.tool_use_id : '';\n if (toolUseId) {\n toolResultMap.set(toolUseId, this.extractTextFromContentBlock(block));\n }\n }\n }\n }\n\n // OpenClaw toolResult messages: role alapú párosítás az előző toolCall id-jével\n let toolCallIdIndex: number = 0;\n for (const msg of history) {\n const role: string = typeof msg.role === 'string' ? msg.role : '';\n if (role === 'toolResult' || role === 'tool_result') {\n const resultText: string = this.extractTextFromMessage(msg);\n if (toolCallIdIndex < toolCallIds.length) {\n toolResultMap.set(toolCallIds[toolCallIdIndex], resultText);\n toolCallIdIndex++;\n }\n }\n }\n\n // Második pass: üzenetek építése, tool_use + tool_result párosítva\n for (const msg of history) {\n const role: string = typeof msg.role === 'string' ? msg.role : 'unknown';\n const rawContent: unknown = msg.content;\n const timestamp: string = Openclaw_DataService.extractGatewayChatMessageTimestamp(msg);\n\n // toolResult role-ú üzenet: kihagyjuk (párosítva a toolCall-hoz)\n if (role === 'toolResult' || role === 'tool_result') {\n continue;\n }\n\n // String content → egyetlen üzenet\n if (typeof rawContent === 'string') {\n messages.push({\n listKey: this.allocateConsoleListKey(),\n type: role === 'user' || role === 'human' ? 'prompt' : role === 'assistant' ? 'assistant' : 'info',\n text: rawContent,\n timestamp: timestamp,\n rawData: msg,\n });\n continue;\n }\n\n // Content blocks array → szétbontás típusonként\n if (Array.isArray(rawContent)) {\n for (const block of rawContent as Record<string, unknown>[]) {\n const blockType: string = typeof block.type === 'string' ? block.type : '';\n\n if (blockType === 'text') {\n messages.push({\n listKey: this.allocateConsoleListKey(),\n type: role === 'user' || role === 'human' ? 'prompt' : 'assistant',\n text: typeof block.text === 'string' ? block.text : '',\n timestamp: timestamp,\n rawData: {\n _block: block,\n _message: {\n role: role,\n timestamp: timestamp,\n contentBlockCount: (rawContent as unknown[]).length,\n },\n },\n });\n } else if (blockType === 'tool_use' || blockType === 'toolCall') {\n const toolName: string = typeof block.name === 'string' ? block.name : 'unknown tool';\n const toolId: string = typeof block.id === 'string' ? block.id : '';\n const toolInput: unknown = block.input ?? block.arguments;\n const pairedResult: string | undefined = toolResultMap.get(toolId);\n messages.push({\n listKey: this.allocateConsoleListKey(),\n type: 'tool',\n text: `${toolName}\\n${JSON.stringify(toolInput, null, 2)}`,\n timestamp: timestamp,\n expandableContent: pairedResult,\n rawData: { _block: block, _pairedResultLength: pairedResult?.length ?? 0 },\n });\n } else if (blockType === 'tool_result') {\n const toolUseId: string = typeof block.tool_use_id === 'string'\n ? block.tool_use_id : '';\n const hasMatch: boolean = !!toolUseId && [...messages].some(\n (m: OcSessionConsoleMessage_Interface): boolean =>\n m.type === 'tool' && m.expandableContent === toolResultMap.get(toolUseId),\n );\n if (!hasMatch) {\n const resultContent: unknown = block.content;\n let resultText: string = '';\n if (typeof resultContent === 'string') {\n resultText = resultContent;\n } else if (Array.isArray(resultContent)) {\n resultText = (resultContent as Record<string, unknown>[])\n .map((rc: Record<string, unknown>): string =>\n typeof rc.text === 'string' ? rc.text : JSON.stringify(rc, null, 2),\n ).join('\\n');\n } else {\n resultText = JSON.stringify(block, null, 2);\n }\n messages.push({\n listKey: this.allocateConsoleListKey(),\n type: 'tool-result',\n text: resultText,\n timestamp: timestamp,\n rawData: { _block: block },\n });\n }\n } else if (blockType === 'thinking') {\n messages.push({\n listKey: this.allocateConsoleListKey(),\n type: 'info',\n text: typeof block.thinking === 'string'\n ? block.thinking : JSON.stringify(block, null, 2),\n timestamp: timestamp,\n rawData: { _block: block },\n });\n } else {\n messages.push({\n listKey: this.allocateConsoleListKey(),\n type: 'info',\n text: JSON.stringify(block, null, 2),\n timestamp: timestamp,\n rawData: { _block: block },\n });\n }\n }\n continue;\n }\n\n // Egyéb: text/message mező vagy teljes msg JSON\n const fallbackContent: string = typeof msg.text === 'string'\n ? msg.text\n : typeof msg.message === 'string'\n ? msg.message\n : JSON.stringify(msg, null, 2);\n\n messages.push({\n listKey: this.allocateConsoleListKey(),\n type: role === 'user' || role === 'human' ? 'prompt'\n : role === 'assistant' ? 'assistant'\n : role === 'tool' || role === 'tool_result' || role === 'tool_use' ? 'tool' : 'info',\n text: fallbackContent,\n timestamp: timestamp,\n rawData: msg,\n });\n }\n\n return messages;\n }\n\n // ── Private: Socket Reconnect Backfill ──────────────────────\n\n /**\n * Socket reconnect utáni hiányzó event-ek pótlása.\n */\n private async backfillMissedEvents(): Promise<void> {\n const sessionId: string = this.activeSessionId_$();\n if (!sessionId || this.lastKnownEventSequence < 0) {\n return;\n }\n\n try {\n const response = await this.ocSession_AS.getSessionEvents({\n sessionId: sessionId,\n sinceSequence: this.lastKnownEventSequence,\n });\n\n const newEvents: Oc_EventItem_Interface[] = response.events;\n\n if (!newEvents.length) {\n return;\n }\n\n this.ngZone.run((): void => {\n const currentEvents: Oc_EventItem_Interface[] =\n this.selectedSessionEvents_$();\n this.selectedSessionEvents_$.set([...currentEvents, ...newEvents]);\n\n for (const event of newEvents) {\n this.pushConsoleMessageFromEvent(event);\n }\n\n this.updateLastKnownSequence(newEvents);\n });\n } catch (err: unknown) {\n DyFM_Log.warn('CCAP_OcSession_DS | backfill failed', err);\n }\n }\n\n /**\n * LastKnownEventSequence frissítése az event lista legmagasabb sequence-éből.\n */\n private updateLastKnownSequence(events: Oc_EventItem_Interface[]): void {\n for (const event of events) {\n if (event.sequence > this.lastKnownEventSequence) {\n this.lastKnownEventSequence = event.sequence;\n }\n }\n }\n\n // ── Private: Socket event handling ──────────────────────────\n\n /**\n * Socket.io event feldolgozása.\n * oc-session:* event-ekre reagál.\n */\n private handleSocketEvent(envelope: {\n event: string;\n payload: Record<string, unknown>;\n }): void {\n const eventName: string = envelope.event;\n const payload: Record<string, unknown> = envelope.payload;\n\n try {\n this.ngZone.run((): void => {\n switch (eventName) {\n case 'oc-session:status':\n this.handleStatusUpdate(payload);\n break;\n case 'oc-session:output':\n this.handleOutputChunk(payload);\n break;\n case 'oc-session:event':\n this.handleSessionEvent(payload);\n break;\n case 'oc-session:list-update':\n this.handleListUpdate(payload);\n break;\n case 'ext-session-msg:message':\n this.handleAssembledMessage(payload);\n break;\n case 'ext-session-msg:update':\n this.handleAssembledMessageUpdate(payload);\n break;\n }\n });\n } catch (err: unknown) {\n DyFM_Log.error(`CCAP_OcSession_DS | socket event error | event: ${eventName}`, err);\n }\n }\n\n /**\n * Status update feldolgozása.\n */\n private handleStatusUpdate(payload: Record<string, unknown>): void {\n const sessionId: string = (payload.sessionId as string) ?? '';\n const status: string = (payload.status as string) ?? '';\n const statusMessage: string | undefined = payload.statusMessage as string | undefined;\n\n this.lastStatusUpdate_$.set({\n sessionId: sessionId,\n status: status,\n statusMessage: statusMessage,\n });\n\n // Session lista frissítése\n const currentSessions: Oc_ListItem_Interface[] = this.sessions_$();\n const updated: Oc_ListItem_Interface[] = currentSessions.map(\n (s: Oc_ListItem_Interface): Oc_ListItem_Interface => {\n if (s.sessionId === sessionId) {\n return { ...s, status: status, statusMessage: statusMessage };\n }\n return s;\n },\n );\n this.sessions_$.set(updated);\n\n // Kiválasztott session detail frissítése\n const currentDetail: Oc_Detail_Response | null =\n this.selectedSession_$();\n if (currentDetail?.session.sessionId === sessionId) {\n const isLive: boolean = status === 'running' || status === 'waiting-input';\n this.selectedSession_$.set({\n ...currentDetail,\n session: {\n ...currentDetail.session,\n status: status,\n statusMessage: statusMessage,\n },\n runtime: {\n ...currentDetail.runtime,\n isLive: isLive,\n runtimeStatus: status,\n },\n });\n }\n\n // Errored státusz → globális error kezelés\n if (status === 'errored') {\n const errorMessage: string = statusMessage\n ? `OC Session error (${sessionId}): ${statusMessage}`\n : `OC Session error (${sessionId}): session entered errored state`;\n this.globalError_CS.showError(\n new Error(errorMessage),\n 'oc-session-status',\n );\n }\n }\n\n /**\n * Output chunk feldolgozása (live console-hoz).\n * Csak az aktív session output-ját fogadjuk.\n */\n private handleOutputChunk(payload: Record<string, unknown>): void {\n const sessionId: string = (payload.sessionId as string) ?? '';\n\n if (sessionId && sessionId !== this.activeSessionId_$()) {\n return;\n }\n\n const content: string = (payload.content as string) ?? '';\n const outputType: string = (payload.type as string) ?? 'response';\n\n if (content) {\n this.pushConsoleMessage({\n type: outputType === 'error' ? 'error' : 'assistant',\n text: content,\n });\n }\n }\n\n /**\n * Session event feldolgozása (timeline-hoz + console-hoz).\n */\n private handleSessionEvent(payload: Record<string, unknown>): void {\n const sessionId: string = (payload.sessionId as string) ?? '';\n\n if (sessionId && sessionId !== this.activeSessionId_$()) {\n return;\n }\n\n const event: Record<string, unknown> =\n (payload.event as Record<string, unknown>) ?? {};\n\n const eventItem: Oc_EventItem_Interface = {\n sessionId: sessionId,\n eventType: (event.eventType as string) ?? '',\n timestamp: (event.timestamp as string) ?? '',\n data: (event.data as Record<string, unknown>) ?? {},\n sequence: (event.sequence as number) ?? 0,\n };\n\n // Duplikáció védelem\n if (eventItem.sequence <= this.lastKnownEventSequence) {\n return;\n }\n\n this.lastKnownEventSequence = eventItem.sequence;\n\n // Timeline-ba hozzáadás\n const currentEvents: Oc_EventItem_Interface[] =\n this.selectedSessionEvents_$();\n this.selectedSessionEvents_$.set([...currentEvents, eventItem]);\n\n // Console-ba: parsolt event-ekből olvasható üzenetek\n this.pushConsoleMessageFromEvent(eventItem);\n }\n\n /**\n * Session lista frissítése (broadcast: session létrehozás / state change).\n */\n private handleListUpdate(_payload: Record<string, unknown>): void {\n // Lista újratöltése (nem blokkoló, hibatoleráns)\n this.loadSessions().catch((): void => {});\n }\n\n /**\n * Parsolt session event-ből olvasható console message generálás.\n */\n /**\n * Szöveg kinyerése egy content block-ból (tool_result, text, stb.).\n */\n private extractTextFromContentBlock(block: Record<string, unknown>): string {\n const resultContent: unknown = block.content;\n if (typeof resultContent === 'string') {\n return resultContent;\n }\n if (Array.isArray(resultContent)) {\n return (resultContent as Record<string, unknown>[])\n .map((rc: Record<string, unknown>): string =>\n typeof rc.text === 'string' ? rc.text : JSON.stringify(rc, null, 2),\n ).join('\\n');\n }\n if (typeof block.text === 'string') {\n return block.text;\n }\n return JSON.stringify(block, null, 2);\n }\n\n /**\n * Szöveg kinyerése egy top-level message-ből (content: string | array).\n */\n private extractTextFromMessage(msg: Record<string, unknown>): string {\n const rawContent: unknown = msg.content;\n if (typeof rawContent === 'string') {\n return rawContent;\n }\n if (Array.isArray(rawContent)) {\n return (rawContent as Record<string, unknown>[])\n .map((block: Record<string, unknown>): string => {\n if (typeof block.text === 'string') {\n return block.text;\n }\n return JSON.stringify(block, null, 2);\n }).join('\\n');\n }\n return JSON.stringify(msg, null, 2);\n }\n\n private pushConsoleMessageFromEvent(event: Oc_EventItem_Interface): void {\n const data: Record<string, unknown> = event.data;\n\n switch (event.eventType) {\n case 'response-chunk': {\n const content: string = typeof data.content === 'string' ? data.content : '';\n if (content) {\n this.pushConsoleMessage({ type: 'assistant', text: content });\n }\n break;\n }\n\n case 'response-complete': {\n // Usage update a tokenek összesítéséhez\n const usage: unknown = data.usage;\n if (usage && typeof usage === 'object') {\n const usageObj: Record<string, unknown> = usage as Record<string, unknown>;\n const current: OcSessionUsage_Interface = this.sessionUsage_$();\n this.sessionUsage_$.set({\n inputTokens: current.inputTokens + (typeof usageObj.inputTokens === 'number' ? usageObj.inputTokens : 0),\n outputTokens: current.outputTokens + (typeof usageObj.outputTokens === 'number' ? usageObj.outputTokens : 0),\n costUsd: current.costUsd + (typeof usageObj.costUsd === 'number' ? usageObj.costUsd : 0),\n });\n }\n break;\n }\n\n case 'tool-call-start': {\n const toolName: string = typeof data.name === 'string' ? data.name : 'unknown';\n const toolInput: unknown = data.input;\n const inputSummary: string = toolInput ? this.summarizeToolInput(toolInput) : '';\n const toolText: string = inputSummary ? `${toolName}: ${inputSummary}` : toolName;\n this.pushConsoleMessage({\n type: 'tool',\n text: toolText,\n rawData: data,\n });\n break;\n }\n\n case 'tool-call-end': {\n const content: unknown = data.content ?? data.output;\n const text: string = typeof content === 'string' ? content : JSON.stringify(content ?? {});\n this.pushConsoleMessage({\n type: 'tool-result',\n text: text.length > 200 ? text.substring(0, 200) + '…' : text,\n expandableContent: text.length > 200 ? text : undefined,\n rawData: data,\n });\n break;\n }\n\n case 'error': {\n const message: unknown = data.message ?? data.content;\n if (typeof message === 'string' && message) {\n this.pushConsoleMessage({ type: 'error', text: message });\n }\n break;\n }\n\n case 'connection-change': {\n const connectionState: string = typeof data.state === 'string' ? data.state : '';\n if (connectionState) {\n this.pushConsoleMessage({\n type: 'info',\n text: `Gateway connection: ${connectionState}`,\n rawData: data,\n });\n }\n break;\n }\n\n default:\n break;\n }\n }\n\n /**\n * Tool input rövid összefoglaló (console megjelenítéshez).\n */\n private summarizeToolInput(input: unknown): string {\n if (typeof input === 'string') {\n return input.length > 80 ? input.substring(0, 80) + '…' : input;\n }\n if (typeof input === 'object' && input !== null) {\n const json: string = JSON.stringify(input);\n return json.length > 80 ? json.substring(0, 80) + '…' : json;\n }\n return '';\n }\n\n // ── Private Static: Gateway field mapping helpers ──────────\n\n /**\n * Egy gateway history elem ideje — nincs parse-pillanat fallback; üres ha nincs ismert mező.\n */\n private static extractGatewayChatMessageTimestamp(raw: Record<string, unknown>): string {\n const iso: string | undefined = CCAP_OcGatewayTimestamp_Util.extractTimestamp(\n raw,\n CCAP_OcGatewayTimestamp_Util.GATEWAY_CHAT_MESSAGE_TIMESTAMP_FIELD_NAMES,\n );\n return iso ?? '';\n }\n\n // ── Assembled messages (SSOT) ──────────────────────────────\n\n /**\n * Assembled message-ek betöltése REST-en.\n */\n async loadAssembledMessages(params: {\n sessionId: string;\n }): Promise<void> {\n try {\n const result = await this.extSessionMsg_AS.getMessages({\n sessionId: params.sessionId,\n latest: true,\n });\n this.assembledMessages_$.set(result.messages);\n } catch (err: unknown) {\n DyFM_Log.error(\n `CCAP_OcSession_DS | loadAssembledMessages failed`\n + ` | sessionId: ${params.sessionId}`,\n err,\n );\n }\n }\n\n /** Új assembled message socket-en. */\n private handleAssembledMessage(\n payload: Record<string, unknown>,\n ): void {\n const sessionId: string =\n typeof payload.sessionId === 'string'\n ? payload.sessionId\n : '';\n if (!sessionId || sessionId !== this.activeSessionId_$()) {\n return;\n }\n const msgData: unknown = payload.message;\n if (!msgData || typeof msgData !== 'object') {\n return;\n }\n const msg: CCAP_ExtSessionMessage_Response =\n msgData as CCAP_ExtSessionMessage_Response;\n const current: CCAP_ExtSessionMessage_Response[] =\n this.assembledMessages_$();\n this.assembledMessages_$.set([...current, msg]);\n }\n\n /** Assembled message frissítés socket-en. */\n private handleAssembledMessageUpdate(\n payload: Record<string, unknown>,\n ): void {\n const sessionId: string =\n typeof payload.sessionId === 'string'\n ? payload.sessionId\n : '';\n if (!sessionId || sessionId !== this.activeSessionId_$()) {\n return;\n }\n const messageKey: string =\n typeof payload.messageKey === 'string'\n ? payload.messageKey\n : '';\n if (!messageKey) {\n return;\n }\n const updateData: unknown = payload.update;\n if (!updateData || typeof updateData !== 'object') {\n return;\n }\n const updateRec: Record<string, unknown> =\n updateData as Record<string, unknown>;\n const current: CCAP_ExtSessionMessage_Response[] =\n this.assembledMessages_$();\n const idx: number = current.findIndex(\n (m: CCAP_ExtSessionMessage_Response): boolean =>\n m.messageKey === messageKey,\n );\n if (idx < 0) {\n return;\n }\n const updated: CCAP_ExtSessionMessage_Response = {\n ...current[idx],\n };\n if (typeof updateRec.bodyText === 'string') {\n updated.bodyText = updateRec.bodyText;\n }\n if (updateRec.toolResult !== undefined) {\n updated.toolResult =\n updateRec.toolResult as CCAP_ExtSessionMessage_Response['toolResult'];\n }\n if (typeof updateRec.toolStatus === 'string') {\n updated.toolStatus = updateRec.toolStatus;\n }\n if (updateRec.headerStatusDot !== undefined) {\n updated.headerStatusDot =\n typeof updateRec.headerStatusDot === 'string'\n ? updateRec.headerStatusDot\n : undefined;\n }\n const next: CCAP_ExtSessionMessage_Response[] = [...current];\n next[idx] = updated;\n this.assembledMessages_$.set(next);\n }\n}\n", "/**\n * Gateway RPC objektumok timestamp kinyerése — közös OC Session lista és Dark Office OCI mapping SSOT.\n */\nexport class CCAP_OcGatewayTimestamp_Util {\n\n /**\n * Gateway chatHistory üzenet timestamp mező prioritás — session lista / Dark Office mapping-gel összhangban.\n * Az `extractTimestamp` string (ISO) és pozitív szám (epoch s/ms) értéket is kezel.\n */\n static readonly GATEWAY_CHAT_MESSAGE_TIMESTAMP_FIELD_NAMES: string[] = [\n 'timestamp',\n 'createdAt',\n 'updatedAt',\n 'ts',\n 'time',\n 'sentAt',\n 'messageTimestamp',\n 'created_at',\n 'updated_at',\n 'lastMessageAt',\n 'last_message_at',\n 'startedAt',\n 'started_at',\n 'lastActivityAt',\n 'last_activity_at',\n ];\n\n /**\n * Session lista `lastActivityAt` — több gateway mezőnév, lifecycle és üzenet idő együtt.\n */\n static readonly GATEWAY_SESSION_LAST_ACTIVITY_FIELD_NAMES: string[] = [\n 'lastActivityAt',\n 'updatedAt',\n 'lastMessageAt',\n 'updated_at',\n 'last_activity_at',\n 'last_message_at',\n 'startedAt',\n 'started_at',\n 'createdAt',\n 'created_at',\n ];\n\n /** Session lista `startedAt` fallback lánc. */\n static readonly GATEWAY_SESSION_STARTED_FIELD_NAMES: string[] = [\n 'startedAt',\n 'started_at',\n 'createdAt',\n 'created_at',\n ];\n\n /**\n * Csak üzenet/output időbélyegek — Dark Office workstation `working` ablak (lifecycle nélkül).\n */\n static readonly GATEWAY_OUTPUT_ONLY_TIMESTAMP_FIELD_NAMES: string[] = [\n 'lastMessageAt',\n 'last_message_at',\n 'lastOutputAt',\n 'last_output_at',\n ];\n\n /**\n * Timestamp kinyerése raw gateway objektumból — több mező nevet és típust is kezel.\n * String (ISO) és szám (epoch ms) típusú értékeket fogad; prioritás a felsorolás sorrendje.\n */\n static extractTimestamp(\n raw: Record<string, unknown>,\n fieldNames: string[],\n ): string | undefined {\n for (const field of fieldNames) {\n const value: unknown = raw[field];\n if (typeof value === 'string' && value) {\n return value;\n }\n if (typeof value === 'number' && value > 0) {\n // Epoch másodperc vs. milliszekundum heurisztika (2001-09-09 előtti epoch ms nem fordul elő)\n const ms: number = value < 1e12 ? value * 1000 : value;\n return new Date(ms).toISOString();\n }\n }\n return undefined;\n }\n}\n", "import {\n Oc_GatewaySessionsFetch_Interface,\n Oc_ListItem_Interface,\n} from '../../_modules/external-sessions/_modules/openclaw/_models/interfaces/oc-list-item.interface';\nimport { CCAP_OcGatewayTimestamp_Util } from './ccap-oc-gateway-timestamp.util';\n\n/**\n * OpenClaw gateway `sessions.list` válasz → normalizált OC session lista elemek (mapper SSOT).\n */\nexport class CCAP_OcGatewaySessionList_Util {\n\n /**\n * API válasz feldolgozása: lista map + lastActivity rendezés + nyers tömb megőrzése.\n */\n static buildGatewaySessionsFetch(params: {\n response: {\n sessions: Record<string, unknown>[];\n source: string;\n instanceId: string;\n gatewayUrl: string;\n /** Opcionális diagnosztika — szerver/gateway válasz kiterjesztése. */\n _firstSessionKeys?: string[];\n };\n }): Oc_GatewaySessionsFetch_Interface {\n const optionalKeys: string[] | undefined = params.response._firstSessionKeys;\n const firstSessionKeys: string[] = Array.isArray(optionalKeys) ? optionalKeys : [];\n\n const rawSessions: Record<string, unknown>[] = Array.isArray(params.response.sessions)\n ? params.response.sessions\n : [];\n\n const listItems: Oc_ListItem_Interface[] = rawSessions.map(\n (raw: Record<string, unknown>): Oc_ListItem_Interface =>\n CCAP_OcGatewaySessionList_Util.mapRawSessionToListItem({\n raw: raw,\n gatewayUrl: params.response.gatewayUrl,\n }),\n );\n\n const sorted: Oc_ListItem_Interface[] =\n CCAP_OcGatewaySessionList_Util.sortListItemsByLastActivityDesc({ items: listItems });\n\n return {\n listItems: sorted,\n rawSessions: rawSessions,\n gatewayUrl: params.response.gatewayUrl,\n source: params.response.source,\n instanceId: params.response.instanceId,\n firstSessionKeys: firstSessionKeys,\n };\n }\n\n /**\n * Egy nyers gateway session sor → lista elem.\n */\n private static mapRawSessionToListItem(params: {\n raw: Record<string, unknown>;\n gatewayUrl: string;\n }): Oc_ListItem_Interface {\n const raw: Record<string, unknown> = params.raw;\n return {\n sessionId: typeof raw['key'] === 'string'\n ? raw['key']\n : typeof raw['sessionId'] === 'string'\n ? raw['sessionId']\n : typeof raw['id'] === 'string'\n ? raw['id']\n : String(raw['key'] ?? raw['sessionId'] ?? raw['id'] ?? ''),\n label: typeof raw['label'] === 'string'\n ? raw['label']\n : typeof raw['name'] === 'string'\n ? raw['name']\n : typeof raw['title'] === 'string' ? raw['title'] : undefined,\n workspacePath: typeof raw['workspacePath'] === 'string'\n ? raw['workspacePath']\n : typeof raw['cwd'] === 'string' ? raw['cwd'] : '',\n status: typeof raw['status'] === 'string' ? raw['status'] : 'unknown',\n statusMessage: typeof raw['statusMessage'] === 'string' ? raw['statusMessage'] : undefined,\n gatewayUrl: params.gatewayUrl,\n openclawAgentName: typeof raw['agentName'] === 'string'\n ? raw['agentName']\n : typeof raw['agent'] === 'string' ? raw['agent'] : undefined,\n promptCount: typeof raw['promptCount'] === 'number'\n ? raw['promptCount']\n : typeof raw['messageCount'] === 'number' ? raw['messageCount'] : 0,\n toolCallCount: typeof raw['toolCallCount'] === 'number' ? raw['toolCallCount'] : 0,\n lastActivityAt: CCAP_OcGatewayTimestamp_Util.extractTimestamp(\n raw,\n CCAP_OcGatewayTimestamp_Util.GATEWAY_SESSION_LAST_ACTIVITY_FIELD_NAMES,\n ),\n startedAt: CCAP_OcGatewayTimestamp_Util.extractTimestamp(\n raw,\n CCAP_OcGatewayTimestamp_Util.GATEWAY_SESSION_STARTED_FIELD_NAMES,\n ),\n lastPrompt: typeof raw['lastPrompt'] === 'string' ? raw['lastPrompt'] : undefined,\n mode: typeof raw['mode'] === 'string' ? raw['mode'] : undefined,\n reasoningEffort: typeof raw['reasoningEffort'] === 'string'\n ? raw['reasoningEffort']\n : typeof raw['thinking'] === 'string' ? raw['thinking'] : undefined,\n isArchived: typeof raw['isArchived'] === 'boolean' ? raw['isArchived'] : false,\n };\n }\n\n /**\n * Legfrissebb `lastActivityAt` felül (gateway lista megjelenítés).\n */\n private static sortListItemsByLastActivityDesc(params: {\n items: Oc_ListItem_Interface[];\n }): Oc_ListItem_Interface[] {\n return [...params.items].sort(\n (a: Oc_ListItem_Interface, b: Oc_ListItem_Interface): number => {\n const dateA: number = a.lastActivityAt ? new Date(a.lastActivityAt).getTime() : 0;\n const dateB: number = b.lastActivityAt ? new Date(b.lastActivityAt).getTime() : 0;\n return dateB - dateA;\n },\n );\n }\n}\n", "import { inject, Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\n\nimport { firstValueFrom } from 'rxjs';\n\nimport { environment } from '../../../../../../environments/environment';\nimport {\n Oc_List_Response,\n Oc_Detail_Response,\n Oc_Event_Response,\n} from '../_models/interfaces/oc-list-item.interface';\nimport { ExS_InstanceContext_DataService } from '../../../_services/exs-instance-context.data-service';\n\n/**\n * OpenClaw Session Toolkit API service.\n * REST API hívások a session lifecycle kezeléséhez és monitorozáshoz.\n * Minden hívás `?ccapId=<current>` paramot küld — a ccapId forrása\n * az instance-szelektor (`ExS_InstanceContext_DataService.activeCcapId_$`).\n */\n@Injectable({ providedIn: 'root' })\nexport class Openclaw_ApiService {\n\n private readonly baseUrl: string = `${environment.api.baseUrl}/oc-session`;\n\n private readonly http: HttpClient = inject(HttpClient);\n\n private readonly peiContext_DS: ExS_InstanceContext_DataService =\n inject(ExS_InstanceContext_DataService);\n\n /**\n * ccapId hozzáfűzése egy meglévő HttpParams-hoz.\n */\n private withCcapId(params: HttpParams): HttpParams {\n const ccapId: string = this.peiContext_DS.activeCcapId_$();\n if (!ccapId) {\n return params;\n }\n return params.set('ccapId', ccapId);\n }\n\n /**\n * Új session létrehozása.\n */\n createSession(params: {\n workspacePath: string;\n label?: string;\n gatewayUrl?: string;\n openclawAgentName?: string;\n initialPrompt?: string;\n actorId?: string;\n actorLabel?: string;\n mode?: string;\n reasoningEffort?: string;\n }): Promise<{ session: Record<string, unknown> }> {\n const httpParams: HttpParams = this.withCcapId(new HttpParams());\n return firstValueFrom(\n this.http.post<{ session: Record<string, unknown> }>(\n this.baseUrl,\n params,\n { params: httpParams },\n ),\n );\n }\n\n /**\n * Session lista lekérdezése.\n */\n listSessions(params?: {\n status?: string;\n workspacePath?: string;\n gatewayUrl?: string;\n includeArchived?: boolean;\n limit?: number;\n offset?: number;\n }): Promise<Oc_List_Response> {\n let httpParams: HttpParams = this.withCcapId(new HttpParams());\n\n if (params?.status) {\n httpParams = httpParams.set('status', params.status);\n }\n if (params?.workspacePath) {\n httpParams = httpParams.set('workspacePath', params.workspacePath);\n }\n if (params?.gatewayUrl) {\n httpParams = httpParams.set('gatewayUrl', params.gatewayUrl);\n }\n if (params?.includeArchived) {\n httpParams = httpParams.set('includeArchived', '1');\n }\n if (params?.limit != null) {\n httpParams = httpParams.set('limit', String(params.limit));\n }\n if (params?.offset != null) {\n httpParams = httpParams.set('offset', String(params.offset));\n }\n\n return firstValueFrom(\n this.http.get<Oc_List_Response>(\n this.baseUrl,\n { params: httpParams },\n ),\n );\n }\n\n /**\n * Session lista lekérdezése közvetlenül a gateway-ről (SSOT).\n * A szerver a sessions_list RPC-t hívja a megadott instance gateway-jén.\n */\n listGatewaySessions(params: {\n instanceId: string;\n }): Promise<{ sessions: Record<string, unknown>[]; source: string; instanceId: string; gatewayUrl: string }> {\n const httpParams: HttpParams = new HttpParams()\n .set('instanceId', params.instanceId);\n\n return firstValueFrom(\n this.http.get<{ sessions: Record<string, unknown>[]; source: string; instanceId: string; gatewayUrl: string }>(\n `${this.baseUrl}/gateway-sessions`,\n { params: httpParams },\n ),\n );\n }\n\n /**\n * Session history lekérdezése közvetlenül a gateway-ről (SSOT).\n */\n getGatewaySessionHistory(params: {\n sessionId: string;\n instanceId: string;\n }): Promise<{ sessionId: string; history: Record<string, unknown>[]; source: string }> {\n const httpParams: HttpParams = new HttpParams()\n .set('instanceId', params.instanceId);\n return firstValueFrom(\n this.http.get<{ sessionId: string; history: Record<string, unknown>[]; source: string }>(\n `${this.baseUrl}/gateway-sessions/${params.sessionId}/history`,\n { params: httpParams },\n ),\n );\n }\n\n /**\n * Prompt küldése a gateway-re (SSOT).\n */\n sendGatewayPrompt(params: {\n sessionId: string;\n instanceId: string;\n content: string;\n agentName?: string;\n }): Promise<{ success: boolean; result: Record<string, unknown>; source: string }> {\n return firstValueFrom(\n this.http.post<{ success: boolean; result: Record<string, unknown>; source: string }>(\n `${this.baseUrl}/gateway-sessions/${params.sessionId}/send`,\n {\n instanceId: params.instanceId,\n content: params.content,\n agentName: params.agentName,\n },\n ),\n );\n }\n\n /**\n * Session megszakítás a gateway-en (SSOT).\n */\n abortGatewaySession(params: {\n sessionId: string;\n instanceId: string;\n }): Promise<{ success: boolean }> {\n return firstValueFrom(\n this.http.post<{ success: boolean }>(\n `${this.baseUrl}/gateway-sessions/${params.sessionId}/abort`,\n { instanceId: params.instanceId },\n ),\n );\n }\n\n /**\n * Session törlése a gateway-en (SSOT).\n */\n deleteGatewaySession(params: {\n sessionId: string;\n instanceId: string;\n }): Promise<{ success: boolean }> {\n const httpParams: HttpParams = new HttpParams()\n .set('instanceId', params.instanceId);\n return firstValueFrom(\n this.http.delete<{ success: boolean }>(\n `${this.baseUrl}/gateway-sessions/${params.sessionId}`,\n { params: httpParams },\n ),\n );\n }\n\n /**\n * Session részletek lekérdezése.\n */\n getSession(params: {\n sessionId: string;\n }): Promise<Oc_Detail_Response> {\n const httpParams: HttpParams = this.withCcapId(new HttpParams());\n return firstValueFrom(\n this.http.get<Oc_Detail_Response>(\n `${this.baseUrl}/${params.sessionId}`,\n { params: httpParams },\n ),\n );\n }\n\n /**\n * Prompt küldése egy session-nek.\n */\n sendPrompt(params: {\n sessionId: string;\n content: string;\n }): Promise<{ success: boolean }> {\n const httpParams: HttpParams = this.withCcapId(new HttpParams());\n return firstValueFrom(\n this.http.post<{ success: boolean }>(\n `${this.baseUrl}/${params.sessionId}/prompt`,\n { content: params.content },\n { params: httpParams },\n ),\n );\n }\n\n /**\n * Session újracsatlakoztatás (gateway reconnect).\n */\n reconnectSession(params: {\n sessionId: string;\n }): Promise<{ success: boolean }> {\n const httpParams: HttpParams = this.withCcapId(new HttpParams());\n return firstValueFrom(\n this.http.post<{ success: boolean }>(\n `${this.baseUrl}/${params.sessionId}/reconnect`,\n {},\n { params: httpParams },\n ),\n );\n }\n\n /**\n * Futó execution leállítása (gateway sessions.abort RPC).\n */\n stopExecution(params: {\n sessionId: string;\n }): Promise<{ success: boolean }> {\n const httpParams: HttpParams = this.withCcapId(new HttpParams());\n return firstValueFrom(\n this.http.post<{ success: boolean }>(\n `${this.baseUrl}/${params.sessionId}/stop-execution`,\n {},\n { params: httpParams },\n ),\n );\n }\n\n /**\n * Session leállítása (terminate).\n */\n terminateSession(params: {\n sessionId: string;\n }): Promise<{ success: boolean }> {\n const httpParams: HttpParams = this.withCcapId(new HttpParams());\n return firstValueFrom(\n this.http.post<{ success: boolean }>(\n `${this.baseUrl}/${params.sessionId}/terminate`,\n {},\n { params: httpParams },\n ),\n );\n }\n\n /**\n * Session config frissítése (mode, effort, agentName).\n */\n updateSessionConfig(params: {\n sessionId: string;\n mode?: string;\n reasoningEffort?: string;\n openclawAgentName?: string;\n }): Promise<{ success: boolean }> {\n const { sessionId, ...body } = params;\n const httpParams: HttpParams = this.withCcapId(new HttpParams());\n return firstValueFrom(\n this.http.patch<{ success: boolean }>(\n `${this.baseUrl}/${sessionId}/config`,\n body,\n { params: httpParams },\n ),\n );\n }\n\n /**\n * Session archiválás állapot beállítása.\n */\n setSessionArchived(params: {\n sessionId: string;\n isArchived: boolean;\n }): Promise<{ success: boolean }> {\n const httpParams: HttpParams = this.withCcapId(new HttpParams());\n return firstValueFrom(\n this.http.patch<{ success: boolean }>(\n `${this.baseUrl}/${params.sessionId}/archive`,\n { isArchived: params.isArchived },\n { params: httpParams },\n ),\n );\n }\n\n /**\n * Session event log lekérdezése.\n */\n getSessionEvents(params: {\n sessionId: string;\n eventType?: string;\n since?: string;\n sinceSequence?: number;\n limit?: number;\n offset?: number;\n latest?: boolean;\n }): Promise<Oc_Event_Response> {\n let httpParams: HttpParams = this.withCcapId(new HttpParams());\n\n if (params.eventType) {\n httpParams = httpParams.set('eventType', params.eventType);\n }\n if (params.since) {\n httpParams = httpParams.set('since', params.since);\n }\n if (params.sinceSequence != null) {\n httpParams = httpParams.set('sinceSequence', String(params.sinceSequence));\n }\n if (params.limit != null) {\n httpParams = httpParams.set('limit', String(params.limit));\n }\n if (params.offset != null) {\n httpParams = httpParams.set('offset', String(params.offset));\n }\n if (params.latest) {\n httpParams = httpParams.set('latest', '1');\n }\n\n return firstValueFrom(\n this.http.get<Oc_Event_Response>(\n `${this.baseUrl}/${params.sessionId}/events`,\n { params: httpParams },\n ),\n );\n }\n\n /**\n * SSE event stream URL generálása (EventSource-hoz).\n */\n getSessionEventStreamUrl(params: { sessionId: string }): string {\n const baseStreamUrl: string = `${this.baseUrl}/${params.sessionId}/events/stream`;\n const ccapId: string = this.peiContext_DS.activeCcapId_$();\n if (!ccapId) {\n return baseStreamUrl;\n }\n return `${baseStreamUrl}?ccapId=${encodeURIComponent(ccapId)}`;\n }\n}\n"],
5
- "mappings": "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",
6
- "names": ["import_fsm_dynamo", "CCAP_OcGatewayTimestamp_Util", "GATEWAY_CHAT_MESSAGE_TIMESTAMP_FIELD_NAMES", "GATEWAY_SESSION_LAST_ACTIVITY_FIELD_NAMES", "GATEWAY_SESSION_STARTED_FIELD_NAMES", "GATEWAY_OUTPUT_ONLY_TIMESTAMP_FIELD_NAMES", "extractTimestamp", "raw", "fieldNames", "field", "value", "ms", "Date", "toISOString", "CCAP_OcGatewaySessionList_Util", "buildGatewaySessionsFetch", "params", "optionalKeys", "response", "_firstSessionKeys", "firstSessionKeys", "Array", "isArray", "rawSessions", "sessions", "listItems", "map", "raw", "mapRawSessionToListItem", "gatewayUrl", "sortListItemsByLastActivityDesc", "items", "source", "instanceId", "sessionId", "String", "label", "undefined", "workspacePath", "status", "statusMessage", "openclawAgentName", "promptCount", "toolCallCount", "lastActivityAt", "CCAP_OcGatewayTimestamp_Util", "extractTimestamp", "GATEWAY_SESSION_LAST_ACTIVITY_FIELD_NAMES", "startedAt", "GATEWAY_SESSION_STARTED_FIELD_NAMES", "lastPrompt", "mode", "reasoningEffort", "isArchived", "sort", "a", "b", "dateA", "Date", "getTime", "Openclaw_ApiService", "baseUrl", "environment", "api", "http", "inject", "HttpClient", "peiContext_DS", "ExS_InstanceContext_DataService", "withCcapId", "params", "ccapId", "activeCcapId_$", "set", "createSession", "httpParams", "HttpParams", "firstValueFrom", "post", "listSessions", "status", "workspacePath", "gatewayUrl", "includeArchived", "limit", "String", "offset", "get", "listGatewaySessions", "instanceId", "getGatewaySessionHistory", "sessionId", "sendGatewayPrompt", "content", "agentName", "abortGatewaySession", "deleteGatewaySession", "delete", "getSession", "sendPrompt", "reconnectSession", "stopExecution", "terminateSession", "updateSessionConfig", "body", "patch", "setSessionArchived", "isArchived", "getSessionEvents", "eventType", "since", "sinceSequence", "latest", "getSessionEventStreamUrl", "baseStreamUrl", "encodeURIComponent", "factory", "\u0275fac", "providedIn", "Openclaw_DataService", "sessions_$", "signal", "sessionsLoading_$", "sessionsLoadError_$", "selectedSession_$", "selectedSessionLoading_$", "selectedSessionEvents_$", "consoleMessages_$", "assembledMessages_$", "lastStatusUpdate_$", "sessionUsage_$", "inputTokens", "outputTokens", "costUsd", "activeSessionId_$", "activeInstanceId_$", "gatewayFilter_$", "extSessionMsg_AS", "inject", "ExS_Message_ApiService", "ocSession_AS", "Openclaw_ApiService", "globalError_CS", "CCAP_GlobalError_ControlService", "socket_CS", "CCAP_Socket_ControlService", "ngZone", "NgZone", "eventSubscription", "reconnectSubscription", "lastKnownEventSequence", "chatPollHandle", "detailPollHandle", "lastPolledHistoryFingerprint", "constructor", "event$", "subscribe", "envelope", "handleSocketEvent", "connected$", "isConnected", "activeId", "emit", "sessionId", "loadAssembledMessages", "catch", "backfillMissedEvents", "ngOnDestroy", "stopChatPolling", "unsubscribe", "setGatewayFilter", "gatewayUrl", "set", "loadSessions", "setGatewayFilterOnly", "params", "__async", "sorted", "listSessions", "status", "workspacePath", "undefined", "includeArchived", "sessions", "sort", "a", "b", "dateA", "lastActivityAt", "Date", "getTime", "err", "pushConsoleMessage", "type", "text", "CCAP_ErrorDisplay_Util", "getErrorMessageForDisplay", "fetchGatewaySessionsForInstance", "response", "listGatewaySessions", "instanceId", "CCAP_OcGatewaySessionList_Util", "buildGatewaySessionsFetch", "loadGatewaySessions", "fetchResult", "listItems", "length", "rawSessions", "firstSessionKeys", "join", "loadSessionDetail", "isSilent", "getSession", "errorMessage", "Error", "message", "loadGatewaySessionHistory", "getGatewaySessionHistory", "rawResponse", "rawKeys", "Array", "isArray", "_rawKeys", "history", "messages", "parseGatewayHistory", "gatewayMessageCount", "messageCount", "firstMessageKeys", "_firstMessageKeys", "listKey", "allocateConsoleListKey", "timestamp", "toISOString", "session", "promptCount", "toolCallCount", "isArchived", "runtime", "isLive", "runtimeStatus", "outputBufferLength", "computeGatewayHistoryFingerprint", "startChatPolling", "loadSessionEvents", "getSessionEvents", "eventType", "limit", "latest", "events", "updateLastKnownSequence", "event", "pushConsoleMessageFromEvent", "createSession", "result", "String", "sendPrompt", "content", "sendGatewayPrompt", "reconnectSession", "stopExecution", "terminateSession", "setSessionArchived", "updateSessionConfig", "currentDetail", "updatedSession", "__spreadValues", "mode", "reasoningEffort", "openclawAgentName", "__spreadProps", "setActiveSessionId", "previousId", "clearLiveOutput", "globalThis", "crypto", "randomUUID", "trimmedText", "trim", "expandableContent", "rawData", "current", "CHAT_POLL_INTERVAL_MS", "second", "DETAIL_POLL_INTERVAL_MS", "setInterval", "pollChatHistory", "sid", "clearInterval", "last", "idPart", "id", "messageId", "tsPart", "extractGatewayChatMessageTimestamp", "body", "extractTextFromMessage", "sliceMax", "contentSlice", "slice", "fingerprint", "run", "toolResultMap", "Map", "toolCallIds", "msg", "rawContent", "block", "btype", "toolId", "push", "toolUseId", "tool_use_id", "extractTextFromContentBlock", "toolCallIdIndex", "role", "resultText", "blockType", "_block", "_message", "contentBlockCount", "toolName", "name", "toolInput", "input", "arguments", "pairedResult", "get", "JSON", "stringify", "_pairedResultLength", "some", "m", "resultContent", "map", "rc", "thinking", "fallbackContent", "newEvents", "sinceSequence", "currentEvents", "DyFM_Log", "warn", "sequence", "eventName", "payload", "handleStatusUpdate", "handleOutputChunk", "handleSessionEvent", "handleListUpdate", "handleAssembledMessage", "handleAssembledMessageUpdate", "error", "statusMessage", "updated", "s", "showError", "outputType", "eventItem", "data", "_payload", "usage", "usageObj", "inputSummary", "summarizeToolInput", "toolText", "output", "substring", "connectionState", "state", "json", "raw", "CCAP_OcGatewayTimestamp_Util", "extractTimestamp", "GATEWAY_CHAT_MESSAGE_TIMESTAMP_FIELD_NAMES", "getMessages", "msgData", "messageKey", "updateData", "update", "updateRec", "idx", "findIndex", "bodyText", "toolResult", "toolStatus", "headerStatusDot", "next", "factory", "\u0275fac", "providedIn"]
7
- }
@@ -1,2 +0,0 @@
1
- import{a as i,b as c}from"./chunk-SIEB5UUT.js";import"./chunk-Q2PKIGLB.js";import"./chunk-UT4EWNR6.js";import"./chunk-U5G7I3PM.js";import"./chunk-7JUIBZEE.js";import"./chunk-C7XPBJTG.js";import"./chunk-V2FE4UOS.js";import"./chunk-WPHEQXWB.js";import"./chunk-GXH7TFVW.js";import"./chunk-IUYZZJPL.js";import"./chunk-5F7AZMBN.js";import"./chunk-H4QUFYYO.js";import"./chunk-Q2NVIOCY.js";import"./chunk-SNX7UMSC.js";import"./chunk-EXMVCGPU.js";import"./chunk-IJNLP24O.js";import"./chunk-V3VQWJQL.js";import"./chunk-I2YW2Q64.js";import"./chunk-ZBTWQZNB.js";import"./chunk-FLAJXIYW.js";import"./chunk-EO4DNTT4.js";import"./chunk-2VC36Y3F.js";import"./chunk-5UPNU54P.js";import"./chunk-ODUTF4DP.js";import"./chunk-QUNT2WPJ.js";import{E as e,Kb as r,z as t}from"./chunk-TBMJSIBB.js";var n=[{path:"",component:i}],s=(()=>{class o{static \u0275fac=function(m){return new(m||o)};static \u0275mod=e({type:o});static \u0275inj=t({imports:[c,r.forChild(n)]})}return o})();export{s as ProjectSource_RoutedModule};
2
- //# sourceMappingURL=project-source-routed.module-HBMJJWHZ.js.map